提问人:Floatingunknown 提问时间:12/11/2022 更新时间:12/11/2022 访问量:50
为什么不使用 return 保存 String 输入变量?[复制]
Why the String input variable won't be saved using return? [duplicate]
问:
该方法不会接受我分配的变量作为回报。
public static String agregarMain() {
Scanner in = new Scanner(System.in);
for (int i = 0; i < 1; i++) {
System.out.println("Ingresar nombre del software/topico");
String mainSeleccion = in.nextLine();
if (mainSeleccion == "") {
System.out.println("Invalid Selection, please try again");
i--;
continue;
}
return mainSeleccion;
}
}
我希望将输入响应保存在mainSeleccion变量中。
答:
2赞
rzwitserloot
12/11/2022
#1
通过代码的所有路径都必须指向一个语句。对此代码的一些分析表明,它应该始终这样做,但这需要知道至少会循环一次。return
for (int i = 0; i < 1; i++)
编译器不会走那么远。因此,这不会编译。只需重新排序一些东西,它就会。另外,您还有第二个问题 - 检查引用标识,它不进行值比较。除非左手边和右手边是原语(即不是引用,因此“引用标识”首先不适用)。您可以改用 equals,或者在这种情况下,使用更惯用的 .解决这两个问题:==
.isEmpty()
public static String agregarMain() {
Scanner in = new Scanner(System.in);
String mainSeleccion = "";
for (int i = 0; i < 1; i++) {
System.out.println("Ingresar nombre del software/topico");
mainSeleccion = in.nextLine();
if (mainSeleccion.isEmpty()) {
System.out.println("Invalid Selection, please try again");
i--;
}
}
return mainSeleccion;
}
注意:在提出有关堆栈溢出的问题时,请包括所有相关错误。你没有,这导致了评论中的一些混乱,并关闭了你的问题。
评论