如果在一行中输入多个字符串,程序将打印“输入字符串”一段额外的时间。例如,我输入“One Two”,它会提示“输入字符串”2次。如果我输入“一二三”,它会提示“输入字符串”3次,依此类推。无论如何在没有在循环中创建新对象的情况下解决这个问题吗?
import java.util.Scanner;
class Array {
public static void main(String[] args) {
String[] x = new String[1000];
Scanner kb = new Scanner(System.in);
int i = 0;
while (true) {
System.out.println ("Enter Strings");
x[i] = kb.next();
if (x[i].equals("done"))
break;
i++;
}
for (i = i - 1; i >= 0; i--) { //prints strings in reverse order prior to done
System.out.println(x[i]);
}
}
}
/*Example Output:
Enter Strings
One Two
Enter Strings
Enter Strings
Hello
Enter Strings
Bye
Enter Strings
done
Bye
Hello
Two
One*/
答案 0 :(得分:5)
它提示每个循环Enter Strings
。如果输入3个令牌(以空格分隔),则它将循环3次,立即读取每个值。
如果您想要一个提示,无论您输入多少令牌/单词,请使用nextLine
阅读整行:
x[i] = kb.nextLine();
答案 1 :(得分:0)
您可以在没有“输入字符串”提示的情况下输入任意数量的字符串,直到您输入“完成”。使用Scanner.hasNext()接受更多字符串而不提示。
System.out.println("Enter Strings");
while(kb.hasNext()){
x[i] = kb.next();
if (x[i].equals("done"))
break;
i++;
}