用于具有用户输入的循环。输出以空格开头

时间:2017-09-25 10:18:14

标签: java loops for-loop

道歉,我开始了,不能解决这里出了什么问题。

// Declare string to hold numbers output
        String lottoNum = "";

        // Declare scanner variable
        Scanner scan1 = new Scanner(System.in);

        // Ask user for numbers
        System.out.println("To buy a ticket we need your numbers...");

        // Set up loop for 6 numbers
        for (int i = 1; i<=6; i++)
        {
            System.out.println("Please enter lotto number " + i);
            String num = scan1.nextLine();
            lottoNum = lottoNum + ", " + num;
        }
        System.out.println(lottoNum);

它按预期循环,要求数字1到6。但是当它返回带有所有6个数字的集合的lottoNum时,它以&#34;,&#34;开始。

Please enter lotto number 5
28
Please enter lotto number 6
19
, 22, 12, 4, 38, 28, 19

为什么从这个&#34;开始,&#34;?我可以阻止它在开始时使用它吗?

4 个答案:

答案 0 :(得分:1)

创建新字符串不是最佳选择。我建议将所有nums收集到一个列表中,然后使用内置的String.join方法。

当然,在解析数字时,最好使用scanner.nextInt()而不是scanner.nextLine()。

    // Declare scanner variable
    Scanner scan1 = new Scanner(System.in);

    // Ask user for numbers
    System.out.println("To buy a ticket we need your numbers...");

    List<Integer> nums = new ArrayList<Integer>();
    // Set up loop for 6 numbers
    for (int i = 1; i<=6; i++)
    {
        System.out.println("Please enter lotto number " + i);
        nums.add(scan1.nextInt());
    }
    System.out.println(String.join(',', nums));

答案 1 :(得分:0)

添加条件:

lottoNum = lottoNum + num;
if (i < 6) lottoNum = lottoNum + ", ";

除最后一个号码外,它会在每个号码的末尾添加,

答案 2 :(得分:0)

您应该尝试在for循环之前保存第一个数字。

然后在for循环中询问数字2,3,4,5和6.

答案 3 :(得分:0)

也许你想使用StringJoiner类来获得所需的行为:

StringJoiner sj = new StringJoiner(", "); //argument passed will separate passed objects
sj.add(String.valueOf(12));
sj.add(String.valueOf(24));
sj.add(String.valueOf(50));
System.out.println(sj);

输出:

12, 24, 50

您可以使用带有3个参数的StringJoiner构造函数 - 您也可以使用它来定义前缀和后缀。