我有以下代码:
Scanner in = new Scanner (System.in);
String[] data = new String[5];
System.out.println("Please, enter the name of the customer ordering:");
data[0] = in.next();
System.out.print("Please, enter the assembly details: ");
data[1] = in.nextLine();
System.out.print("Please, enter the assembly id:");
data[2] = in.next();
System.out.println("Please, enter the date the assembly was ordered (MM-DD-YYYY):");
data[3] = in.next();
我试图让nextLine()读取多个单词,但在测试时,它只是跳转到下一个数据扫描[2]。我需要帮助。我不知道该怎么做。
答案 0 :(得分:2)
这应该有效:
Scanner in = new Scanner (System.in);
String[] data = new String[5];
System.out.println("Please, enter the name of the customer ordering:");
data[0] = in.nextLine();
System.out.println("Please, enter the assembly details: ");
data[1] = in.nextLine();
System.out.println("Please, enter the assembly id:");
data[2] = in.nextLine();
System.out.println("Please, enter the date the assembly was ordered (MM-DD-YYYY):");
data[3] = in.nextLine();
in.close();
您应该使用nextLine()
而不是next()
来从控制台读取每一行
答案 1 :(得分:0)
next() - 查找并返回此扫描程序中的下一个完整令牌 nextLine() - 使此扫描器超过当前行并返回跳过的输入。
来自java API文档。
答案 2 :(得分:0)
如果您不知道自己在做什么,请不要同时使用next()
和nextLine()
,否则很容易导致错误。 next()
读取下一个输入标记,nextLine()
所有标记直到下一行。所以如果你有这样的输入:
约翰\ nSquirrels
(\ n是换行符)
第一个next()
返回“John”并离开我们
\ nSquirrels
之后nextLine()
在行结束前没有任何标记,所以你得到一个空字符串而不是“Squirrels”。