当前位置: 首页 > 知识库问答 >
问题:

ArrayList输出错误

拓拔德馨
2023-03-14

我正在尝试制作一个程序,让很多人进入ArrayList,然后从中随机选择一个名字。代码运行正常,但请求名称输入的字符串在第一次运行时会显示两次。知道为什么会这样吗?

我希望它显示的内容:输入名称:。。。。。。

显示内容:输入名称:输入名称:。。。。。。

import java.util.*;

class RandomNumGen
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        Random random = new Random();

        ArrayList<String> names = new ArrayList<String>();

        int a, b;

        System.out.print("\nEnter the number of people: ");
        a = input.nextInt();
        System.out.println();

        for (int i = 0; i <= a; i++)
        {
            System.out.print("Enter a name: ");
            names.add(input.nextLine());
        }

        b = random.nextInt(a);
        System.out.print("\nRandom name: " +names.get(b)+ "\n");
    }
}

共有1个答案

隆睿
2023-03-14

问题是,nextInt()只使用一个整数,而不是按Enter时输入的新行字符。

要解决这个问题你可以加上

input.nextLine();

调用nextInt()之后,它消耗新行字符。

另一种选择是读取整行,然后将其内容(String)解析为int

a = Integer.parseInt(input.nextLine());
 类似资料:
  • 我想从数组列表打印元素,但我得到错误的输出(.A@15db9742)

  • 我在看问题: 编写一个程序,读取一系列整数并按升序显示。 我正在创建一个ArrayList(我是新手),我想用从命令行输入的整数填充它。对于一个数组,我可以使用for循环 但是使用无界大小的ArrayList,我不知道如何处理输入? 编辑:

  • 我有一个数据类型的ArrayList(它存储一个名为name的字符串和一个名为age的整数)。打印Arraylist的内容时,它会打印正确的年龄,但与我上次添加的元素的名称相同。下面是PrintCollection方法 } 这是数据类

  • 10.2. 标准输入、输出和错误 UNIX 用户已经对标准输入,标准输出和标准错误的概念非常熟悉了。这一节是为其他不熟悉的人准备的。 标准输入和标准错误(通常缩写为 stdout 和 stderr)是內建在每一个 UNIX 系统中的管道。当你 print 某些东西时,结果前往 stdout 管道;当你的程序崩溃并打印出调试信息(类似于 Python 中的错误跟踪)的时候,信息前往 stderr 管

  • 问题内容: 为什么我从以下代码中获得“ AAAAAAAAA”而不是“ 1A234A567”: 任何想法? 问题答案: 函数以正则表达式为参数。和正则表达式“。” 表示“任何字符”。您必须对其进行转义以指定它是您想要的字符: