System.out.println("How many different types of food do the gerbils eat?");
Scanner keyboard = new Scanner(System.in);
int numberofitems = keyboard.nextInt();
String[] fooditems = new String[numberofitems];
for(int i=0; i<fooditems.length; i++){
System.out.println("Name of food item " + (i+1) + ":");
fooditems[i]= keyboard.nextLine();
}
沙鼠吃了多少种不同的食物?
5
食品1的名称:
食品2的名称:
红色药丸
食品名称3:
蓝色药丸
食品名称4:
绿色药丸
食品名称5:
橙色药丸
当提示时,数字5和不同的食物名称只是随机用户输入。
为什么不让我输入食品1的名称?
答案 0 :(得分:1)
在nextInt()之后添加nextLine()以清除缓冲区。 试试这段代码:
System.out.println("How many different types of food do the gerbils eat?");
Scanner keyboard = new Scanner(System.in);
int numberofitems = keyboard.nextInt();
keyboard.nextLine();
String[] fooditems = new String[numberofitems];
for(int i=0; i<fooditems.length; i++){
System.out.println("Name of food item " + (i+1) + ":");
fooditems[i]= keyboard.nextLine();
}
答案 1 :(得分:0)
因为它在5之后读取(空)行的其余部分。在循环之前添加另一个调用以使用换行符。
答案 2 :(得分:0)
读取数字5后,输入仍然在缓冲区中有换行符,这意味着您对nextLine()
的下一次调用将读取下一个换行符的输入,该换行符将读取空白。
相反,在读取数字后,通过添加以下行来消耗剩下的行:
keyboard.nextLine();