我有一点问题: 我有一个程序,用空格分割一个字符串(只有单个ws),但是当我将该值赋给String数组时,它只有一个对象。 (我只能打印' 0'索引)。 这是代码:
public void mainLoop() {
Scanner sc = new Scanner(System.in);
String parse = "#start";
while (!parse.equals("#stop") || !parse.isEmpty()) {
parse = sc.next();
String[] line = parse.split("[ ]");
System.out.println(line[0]);
}
}
' mainLoop'通过方法' main'来实例调用。
答案 0 :(得分:2)
默认情况下Scanner#next
使用空格分隔输入。您可以使用nextLine
从扫描仪读取而不使用此分隔符模式
parse = sc.nextLine();
comments中提到的前几点仍然有效
while (!parse.equals("#stop") && !parse.isEmpty()) {
parse = sc.nextLine();
String[] line = parse.split("\\s");
System.out.println(Arrays.toString(line));
}
答案 1 :(得分:0)
当您在扫描仪上调用next
时,它会从输入中返回下一个标记。例如,如果用户将写文本
foo bar
next
的第一次通话将返回"foo"
,next
的下一次通话将返回"bar"
。
如果您希望以nextLine
形式获取字符串(整行),可以考虑使用next
代替"foo bar"
。
此外,您不必在[]
中放置空格,因此您可以使用split("[ ]")
代替split(" ")
,或使用代表空格的\s
split("\\s")
while( !condition1 || !condition2 )
1}}。
您似乎遇到的另一个问题是
while( !(condition1 || condition2) )
如果您想说循环应该继续,直到满足任一条件,那么您应该以表格形式写出
while( !condition1 && !condition2 )
{{1}}
答案 2 :(得分:-1)
如果你想用一个空格分割,你为什么不这样做呢?
String[] line = parse.split(" ");