Function initialisation

Is it necessary to always initialise the result variable in the function

For example

Public class Calculator

result=addition(a,b);

Public static int addition(int a, int b)
int result;
result =a+b;
return result; 
Jon Skeet
people
quotationmark

You don't need to have a result variable at all. You need to make sure that every possible way that execution can reach the end of your function (without just throwing an exception) means you get to a return statement, and every return statement has an appropriate express to evaluate, but that doesn't mean you need a separate variable. Your example could be written as:

public static int addition(int a, int b) {
    return a + b;
}

If you do use a variable, you'll need to make sure it's definitely assigned before you can read from it, including in a return statement. For example, this won't work because result hasn't been definitely assigned:

public static int addition(int a, int b) {
    int result;
    if (a < b) {
        result = a + b;
    }
    return result; // Invalid! result may not have a value
}

Where possible, it's generally a good idea to initialize a variable at the point of declaration. So if I were writing this code and wanted a result variable, I'd have:

public static int addition(int a, int b) {
    int result = a + b;
    return result;
}

Now, looking at your sample code again, you've got another variable used when you call the method:

result=addition(a,b);

It's not clear where that variable would be declared (which is one reason to avoid just posting pseudo-code in questions) but it's completely separate from the result variable in addition, which is local to the addition method. The two variables happen to have the same name, but they're otherwise unrelated. For example, you could easily have:

int sum = addition(a, b);

or call another method with the result instead of assigning it to a variable:

System.out.println(addition(a, b));

Or you could just ignore it entirely:

addtion(a, b); // Valid, but pointless unless there are side-effects

people

See more on this question at Stackoverflow