2014-11-05 3 views
-5

Я сделал метод, который будет принимать строку и int и вернет int. Я хочу знать, почему он не работает. (NumSLHorizontal не может быть разрешен к переменной) Вот соответствующая часть кодаПочему мой метод не возвращает int?

for (int x = 1; x <= H; x++) { 
     System.out.println("Introduza os " + V + " valores das rua " + x); 
     String RuaTemp = input.next(); 
     Confirmador(RuaTemp, V); 
     } 
    System.out.println(NumSLHorizontal); 



    input.close(); 
} 
    public static int Confirmador (String RuaTemp, int V) { 
     int NumSLHorizontal = 0; 
     for (int z = 0; z < V; z++) { 
      char firstLetter = RuaTemp.charAt(z); 
      if (firstLetter == '-') { 
       NumSLHorizontal++; 
      } 

     } 
     return NumSLHorizontal; 
+1

Что не работает ??, Каково фактическое поведение? – DGomez

+0

Eclipse сообщает мне, что: NumSLHorizontal не может быть разрешен переменной –

+0

Confirmador (RuaTemp, V) ;, здесь вы должны получить возвращаемое значение .... – DGomez

ответ

0
int result=0; 
for (int x = 1; x <= H; x++) { 
    System.out.println("Introduza os " + V + " valores das rua " + x); 
    String RuaTemp = input.next(); 
    result = Confirmador(RuaTemp, V); 
} 
System.out.println(result); 
input.close(); 
} 
public static int Confirmador (String RuaTemp, int V) { 
    int NumSLHorizontal = 0; 
    for (int z = 0; z < V; z++) { 
     char firstLetter = RuaTemp.charAt(z); 
     if (firstLetter == '-') { 
      NumSLHorizontal++; 
     } 
    } 
    return NumSLHorizontal; 
} 
+0

Работает! Большое спасибо. –

0

Вам необходимо присвоить возвращаемое значение переменной:

int NumSLHorizontal = 0; 
for (int x = 1; x <= H; x++) { 
    ... 
    NumSLHorizontal = Confirmador(RuaTemp, V); 
} 
System.out.println(NumSLHorizontal); 

(Обратите внимание, что на пути вашего код структурирован, он сохраняет и распечатывает значение, полученное от , последний, звонок в Confirmador().)

0

Когда вы звоните метод, возвращающий значение, вам действительно нужно что-то сделать со значением.

Ваш метод выглядит следующим образом:

public static int Confirmador (String RuaTemp, int V) { 
    int NumSLHorizontal = 0; 
    for (int z = 0; z < V; z++) { 
     char firstLetter = RuaTemp.charAt(z); 
     if (firstLetter == '-') { 
      NumSLHorizontal++; 
     } 

    } 
    return NumSLHorizontal; 
} 

Похоже, что вы думали, что return NumSLHorizontal бы поместить результат в NumSLHorizontal и что остальная часть программы будет затем использовать эту переменную имя для доступа к результату. Это не то, что происходит. NumSLHorizontal является локальной переменной в методе Confirmador, и к этой переменной можно обращаться только внутри этого метода.

Как и другие ответы, чтобы использовать возвращаемое значение, вы должны что-то сделать со значением при вызове метода. Вы можете назначить другую переменную к нему:

result = Confirmador(RuaTemp, V); 

или вы могли бы передать его другому методу:

System.out.println(Confirmador(RuaTemp, V)); 

или вы можете использовать его в выражении любым другим способом, вы могли бы использовать int.

0

Возможно, вам будет лучше показать весь код. из того, что я могу понять из этого кода, существует проблема области. Вы пытаетесь вывести NumSLHorizontal, которые существуют внутри Confirmador из-за пределов этой функции. Обычно вы не сможете скомпилировать это, если не существует глобальной переменной с именем NumSLHorizontal .if так что это переоценено внутри Confirmador.Correct me, если я ошибаюсь.

Смежные вопросы