以下是我的java代码
我想输入:asd 123456 hellohello
输出:
ASD
123456
hellohello
然而它出来了错误。有人可以帮帮我吗?
包裹测试;
import java.util.Scanner;
public class test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner (System.in);
String cs = sc.next();
String[] output = cs.split("\\s+");
System.out.println(output[0]);
System.out.println(output[1]);
System.out.println(output[2]);
}
}
答案 0 :(得分:2)
我已经修复了一些代码:
import java.util.Scanner;
public class SplitStringWithSpace {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String cs = sc.nextLine();
//close the open resource for memory efficiency
sc.close();
System.out.println(cs);
String[] output = cs.split("\\s+");
for (String retval : output) {
System.out.println(retval);
}
}
}
答案 1 :(得分:0)
next()
只返回输入中的下一个标记而不是整行,您的代码将抛出ArrayIndexOutOfBoundsException
,因为它代表bcoz output
的长度等于1。
您需要nextLine()
方法来获取整行。
答案 2 :(得分:0)
此处sc.next()
使用spaces
分隔符。因此,如果输入为foo bar
,则会得到:
sc.next(); //`foo`
sc.next(); //`bar`
您可以选择sc.nextLint()
并使用其余代码。如果您必须继续使用sc.next()
,则可以尝试使用此代码段。
while(sc.hasNext()) { //run until user press enter key
System.out.println(sc.next());
}