首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在这个for循环中跳过keyboard.nextLine()?(爪哇)

为什么在这个for循环中跳过keyboard.nextLine()?(爪哇)
EN

Stack Overflow用户
提问于 2014-04-19 01:18:28
回答 3查看 1.2K关注 0票数 0

到目前为止,这是我的代码:

代码语言:javascript
复制
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的名称?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-19 01:34:09

在nextLine()之后添加一个nextInt()以清除缓冲区。试试下面的代码:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2014-04-19 01:24:24

因为它在5之后读取(空)行的其余部分。在循环之前添加另一个调用来使用换行符。

票数 0
EN

Stack Overflow用户

发布于 2014-04-19 01:38:12

读取数字5之后,输入仍然具有缓冲区中的换行符,这意味着下一个对nextLine()的调用将输入读入到下一个换行符,换行符读取空白。

相反,在读取数字后使用行的其余部分,方法是添加以下行:

代码语言:javascript
复制
keyboard.nextLine();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23164680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档