我有这段代码应该通过Scanner的next()或nextLine()方法将String值添加到arrayList。 next()的问题是它忽略了第一个空格后的所有内容,所以我得到了我应该使用nextLine()方法。 nextLine()的问题在于它不记录输入,而是将几个空格存储到arrayList中。这是代码:
System.out.println("\nWhat is your idea? ");
String i = in.nextLine();
in.nextLine();
meals.add(i);
System.out.println("\n" + i + " has been entered into the idea pool. \n");
System.in.read();
我在最初的“String i = in.nextLine()”之后添加了额外的“in.nextLine()”,因为这是我在研究这个问题时找到的唯一修复,但它对我不起作用,它只是仍然只是存储几个空格。此外,最后的System.in.read();
只有那里,所以它不会只是在输入后跳转。
以下示例适用于以下代码:
ArrayList<String> meals = new ArrayList<String>();
String select = "";
while(!select.equals("")){
System.out.println("What would you like to do?");
System.out.println("1. <Irrelevant>");
System.out.println("2. Enter an idea");
System.out.println("3. <Irrelevant>");
System.out.println("4. <Irrelevant>");
System.out.println("Q. <Irrelevant>");
select = in.next();
switch(select){
case "1":
//Some stuff here.
case "2":
//Here's where the above problem fits into.
case "3":
//More stuff here
//and so on...
}
}
答案 0 :(得分:0)
您遇到此类问题的原因是因为您首先使用next()方法来读取输入,以及使用nextLine()进行的其他输入。
next()接受输入,输入指针与当前输入保持在同一行。
因此,只要您输入您的选择并按Enter键,选项就会保存到select
变量中,但输入指针仍然在同一行。您应该使用nextLine()将指针移动到新行。
然后你应该使用任意数量的nextLine()来接收多行。
此外,从case 2语句中删除一个额外的nextLine()方法调用。删除System.in.read(),因为你的问题已经解决了。
ArrayList<String> meals = new ArrayList<String>();
String select = "";
while(!select.equals("")){
System.out.println("What would you like to do?");
System.out.println("1. <Irrelevant>");
System.out.println("2. Enter an idea");
System.out.println("3. <Irrelevant>");
System.out.println("4. <Irrelevant>");
System.out.println("Q. <Irrelevant>");
select = in.next();
in.nextLine(); // add this extra line in your code
switch(select){
case "1":
//Some stuff here.
case "2":
System.out.println("\nWhat is your idea? ");
String i = in.nextLine();
meals.add(i);
System.out.println("\n" + i + " has been entered into the idea pool. \n");
case "3":
//More stuff here
//and so on...
}