我已经创建了一个带字符串和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;
答案 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中的NumSLHorizontal。通常你不应该能够编译它,除非有一个名为NumSLHorizontal的全局变量。如此,它在Confirmador中被覆盖。如果我错了,请更正我。