2014-11-05 61 views
-5

我做了一个方法,将采取一个字符串和一个int并将返回一个int。 我想知道它为什么不起作用。 (NumSLHorizo​​ntal不能被解析为一个变量)下面的代码的相关部分为什么我的方法不返回一个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 2014-11-05 18:29:02

+0

Eclipse告诉我: NumSLHorizo​​ntal无法解析为变量 – 2014-11-05 18:29:42

+0

Confirmador(RuaTemp,V);这里您应该得到返回值.... – DGomez 2014-11-05 18:30:09

回答

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

作品!非常感谢。 – 2014-11-05 18:32:43

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

如果你显示所有的代码,它可能会更好。从这个代码中我可以理解的是存在一个范围问题。你试图从这个函数的外部输出Confirmador内存在的NumSLHorizo​​ntal。通常你不应该能够编译这个,除非有一个名为NumSLHorizo​​ntal .if的全局变量所以,它在Confirmador内被覆盖。如果我错了,请纠正我。

相关问题