我正在做学校运动,我无法想办法做一件事。 对于我所读到的内容,Scanner不是最佳方式,但由于教师只使用Scanner,因此必须使用Scanner完成。
这就是问题所在。 用户将文本输入到数组。该数组最多可以有10行,用户输入以空行结束。
我做到了这一点:
String[] text = new String[11]
Scanner sc = new Scanner(System.in);
int i = 0;
System.out.println("Please insert text:");
while (!sc.nextLine().equals("")){
text[i] = sc.nextLine();
i++;
}
但这不能正常工作,我无法弄明白。 理想情况下,如果用户输入:
This is line one
This is line two
现在按回车键,打印它应该给出的数组:
[This is line one, This is line two, null,null,null,null,null,null,null,null,null]
你能帮助我吗?
答案 0 :(得分:8)
while (!sc.nextLine().equals("")){
text[i] = sc.nextLine();
i++;
}
这将从您的输入中读取两行:一行与空字符串进行比较,然后另一行与数组实际存储。您希望将该行放在变量中,以便在两种情况下都检查并处理相同的String
:
while(true) {
String nextLine = sc.nextLine();
if ( nextLine.equals("") ) {
break;
}
text[i] = nextLine;
i++;
}
答案 1 :(得分:3)
以下是适用于您的代码的典型readline惯用语:
String[] text = new String[11]
Scanner sc = new Scanner(System.in);
int i = 0;
String line;
System.out.println("Please insert text:");
while (!(line = sc.nextLine()).equals("")){
text[i] = line;
i++;
}
答案 2 :(得分:0)
当您尝试输入10个以上的字符串而没有提示OutBoundException时,以下代码将自动停止。
String[] text = new String[10]
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 10; i++){ //continous until 10 strings have been input.
System.out.println("Please insert text:");
string s = sc.nextLine();
if (s.equals("")) break; //if input is a empty line, stop it
text[i] = s;
}