我正在用一段旧代码建模一个while循环,因为我有点忘了怎么做。这是旧篇幅:
Scanner s2 = new Scanner(System.in);
Q1 = s2.nextDouble();
while (Q1 < 1 || Q1 > 5) {
System.out.println("");
System.out.println("ERROR: Please enter a number between 1 and 5.");
System.out.println("");
System.out.println(question1);
Q1 = s2.nextDouble();
}
这很简单。这是我现在写的那篇文章:
System.out.println("Welcome to " + appName + "!");
System.out.println("To begin, please select a username.");
Scanner usernameScanner = new Scanner(System.in);
String username = usernameScanner.nextLine();
System.out.println("Your username will be " + username + ".");
System.out.println("Is that correct?");
while(username.length() < 3){
System.out.println("Error: Your username must be more than 3 characters.");
System.out.println("Please select a username.");
String username = usernameScanner.nextLine();
}
我告诉我这个错误:
“线程中的异常”主“java.lang.Error:未解决的编译问题:重复的本地变量用户名”
我认为修复很简单,但我很困惑。我不是在第一件中重新定义局部变量吗?为什么它不能在第二个工作?
提前谢谢。
答案 0 :(得分:7)
在循环while(username.length() < 3)
中,行String username = usernameScanner.nextLine();
需要更改为username = usernameScanner.nextLine();
。您没有修改username
中的值,而是声明了一个具有相同名称的新变量,从而导致错误。