我的while循环有问题。它正在编译,但它没有进入while循环,它会跳到下一个条件。
public class Tr {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String name = "";
while(name.length() > 1) {
System.out.print("Enter name : ");
name = in.nextLine( );
if(name.length() > 1) {
System.out.println("It needs to be greater than 1");
}
}
}
}
答案 0 :(得分:2)
这是因为name
的长度为0,因此控件永远不会进入while
。您需要使用do..while
循环,以便它至少执行一次,例如:
do{
System.out.print("Enter name : ");
name = in.nextLine( );
if(name.length() <= 1){
System.out.println("It needs to be greater than 1");
}
}while(name.length() <= 1);
答案 1 :(得分:2)
您想要的逻辑似乎是提示用户输入名称,并继续提示,直到输入长度大于1的名称。 do
循环似乎很适合:
Scanner in = new Scanner(System.in);
String name;
do {
System.out.print("Enter name with length > 1: ");
name = in.nextLine();
// you can print an optional feedback message
if (name.length() <= 1) {
System.out.println("length needs to be greater than 1");
}
} while (name.length() <= 1);
答案 2 :(得分:0)
您的变量name
已初始化为name = "";
,因此name.length() == 0;
。
你的while条件检查长度是否大于1,并且不是这样,它会跳过。
答案 3 :(得分:0)
因为name.length()
总是返回0,所以你的条件永远不会成真。
答案 4 :(得分:0)
(name.length()&lt; 1) 在我们的while和if条件下改变这个条件。
您已经定义了一个名为name的空字符串,并且while循环条件的条件检查name的长度是否大于1。