2015-06-19 2 views
0
int add3(int...numbers) 
{ 
    for(int number : numbers) 
    { 
     int number1=0; 
     number1= number+number1; 
    } 
    return number1; 
} 

Это то, что я написал, чтобы узнать суммирование n чисел при передаче методом. Я получаю сообщение об ошибке при получении возвращаемого значения, то есть переменная number1 не может быть разрешена к типу переменной.Поиск возвращаемого значения при передаче n переменных в методе

+1

Variable1 - это локальная переменная внутри цикла, вы не можете ссылаться на нее за ее пределами. – SomeJavaGuy

ответ

1

Вы должны объявить число 1 перед циклом. Если вы определяете его внутри цикла, он не распознается после цикла в инструкции return.

int add3(int...numbers) 
{ 
    int number1=0; 
    for(int number : numbers) 
    { 
     number1= number+number1; 
    } 
    return number1; 
} 

Другое предложение изменить number1 на значимое имя, например, sum.

0

Для каждого номера вы объявляющего int number1 внутри цикла

int add3(int...numbers) 
{ 
    for(int number : numbers) 
    { 
     int number1=0;// each time you r declaring this 
     number1= number+number1;//number1 = 0 + number all the time. so you will not get summation of numbers 
    } 
    return number1;//compiler error will be there because no declaration for number1 for out of the loop 
} 

Так объявить number1 вне цикла:

int add3(int...numbers) 
{ 
    int number1=0; 
    for(int number : numbers) 
    { 
     number1= number+number1; 
    } 
    return number1; 
} 
0

Вы должны узнать о variable scope.

number1 - локальная переменная внутри цикла, вы не можете ссылаться на нее за ее пределами. Вместо того, чтобы объявить number1 вне for петли, как:

int add3(int...numbers) 
{ 
    int number1=0; 
    for(int number : numbers) 
    { 
     number1= number+number1; 
    } 
    return number1; 
} 

Теперь сферы из number1 целой add3 функции и, следовательно, можно ссылаться в любом месте внутри функции.