为什么我的方法没有返回int?

时间:2014-11-05 18:27:40

标签: java methods int return

我已经创建了一个带字符串和int的方法,并返回一个int。 我想知道为什么它不起作用。 (NumSLHorizo​​ntal无法解析为变量)这里是代码的相关部分

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;

4 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

您需要将返回值分配给变量:

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

(请注意,代码的结构方式只会保留并打印出从最后调用Confirmador()调用后得到的值。)

答案 2 :(得分: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以任何其他方式在表达式中使用它。

答案 3 :(得分:0)

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