到目前为止,这是我的代码:
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的名称?
发布于 2014-04-19 01:34:09
在nextLine()之后添加一个nextInt()以清除缓冲区。试试下面的代码:
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();}
发布于 2014-04-19 01:24:24
因为它在5之后读取(空)行的其余部分。在循环之前添加另一个调用来使用换行符。
发布于 2014-04-19 01:38:12
读取数字5之后,输入仍然具有缓冲区中的换行符,这意味着下一个对nextLine()的调用将输入读入到下一个换行符,换行符读取空白。
相反,在读取数字后使用行的其余部分,方法是添加以下行:
keyboard.nextLine();https://stackoverflow.com/questions/23164680
复制相似问题