Java 为什么我的方法不返回int?

Java 为什么我的方法不返回int?,java,methods,int,return,Java,Methods,Int,Return,我已经创建了一个方法,它接受一个字符串和一个int,并返回一个int。 我想知道为什么它不起作用。NumSLHorizontal无法解析为变量这是代码的相关部分 for (int x = 1; x <= H; x++) { System.out.println("Introduza os " + V + " valores das rua " + x); String RuaTemp = input.next(); Confirmador(R

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

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;

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

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

请注意,按照代码的结构,它只保留并打印上次调用Confirmador时得到的值。

当调用返回值的方法时,实际上必须对该值进行处理

您的方法如下所示:

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;
}
或者您可以将其传递给另一种方法:

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

或者您可以在表达式中以任何其他方式使用它,您可以使用int。

如果您显示所有代码,可能会更好。根据我从这段代码中了解到的情况,存在一个作用域问题。您正试图从该函数外部输出Confirmador内部存在的NumSLHorizontal。通常,除非有一个名为NumSLHorizontal的全局变量,否则您将无法编译该变量。如果是这样,它在Confirmador中被重写。如果我错了,请纠正我。

什么不起作用??,实际行为是什么??Eclipse告诉我:NumSLHorizontal无法解析为变量confirmadorruatemp,V;,在这里,您应该得到返回值….-1,用于不标识标记错误的行。没有这些信息,很难看到你的bug。在这里提问时,始终包括整个错误消息,并标识标记的行。
result = Confirmador(RuaTemp, V);
System.out.println(Confirmador(RuaTemp, V));