【问题标题】:While Loops in Java ProblemsJava 中的 While 循环问题
【发布时间】:2021-12-10 22:41:51
【问题描述】:

现在我们正在学习 while 循环 - 这就是挑战。 “程序应该反复提示用户输入一个数字。保持用户输入的数字的总和,并记录用户输入的数量。每当用户输入不是整数。当用户完成后,打印用户输入的条目数及其总和。"

“与此程序的示例交互可能如下所示: 程序:输入一个整数以继续,或输入一个非整数值以完成。然后按回车键。

用户:2

程序:输入一个整数以继续,或输入一个非整数值以完成。然后按回车键。

用户:6

程序:输入一个整数以继续,或输入一个非整数值以完成。然后按回车键。

用户:89

程序:输入一个整数以继续,或输入一个非整数值以完成。然后按回车键。

用户:q

程序:您输入了 3 个整数。您的条目总数为 97。”

这是我目前所拥有的。

import java.util.Scanner;
public class InputSequence
{
    public static void main (String[] args)
    {
        Scanner scan = new Scanner(System.in);
        System.out.println ("Enter an integer to continue or a non-integer value to finish. Then press return.");
        int sum = 0;
        int total = 0;
        while (scan.hasNextInt())
        {
            scan.next();
            System.out.println ("Enter an integer to continue or a non-integer value to finish. Then press return.");
            int input = scan.nextInt();
            sum = input + input;
            total = total + 1;
        }
        System.out.println ("You entered " + total + " integers. The sum of your entries is " + sum);
    }
}

我只是有点困惑,因为我的交互似乎在 while 循环中每 2 次跳过 system.out.println,然后不将第一个输入计入总数。我相信总和也不总是正确计算。此外,如果我输入了很多整数,那么一个非整数结束程序我将收到一个错误而不是结束消息。但是,假设我输入两个整数,然后输入一个字符串,我会得到结束消息。

【问题讨论】:

  • 我想我有我需要的一切,只是在 while 循环中的顺序错误。我只是不知道如何解决它。

标签: java loops while-loop integer


【解决方案1】:

您的问题在于scan.next() 中的用法可以删除,并且应该正确显示System.out.println

.next() 方法是nextInt() 的通用方法,它返回一个String

您可以做的另一件事是从 while 循环切换到 do while 以防止您重复此行两次:

System.out.println ("Enter an integer to continue or a non-integer value to finish. Then press return.");

一个例子是:

Scanner scan = new Scanner(System.in);
        int sum = 0;
        int total = 0;
        do {
            System.out.println ("Enter an integer to continue or a non-integer value to finish. Then press return.");
            int input = scan.nextInt();
            sum = sum + input;
            total = total + 1;
        } while (scan.hasNextInt());
        System.out.println ("You entered " + total + " integers. The sum of your entries is " + sum);
    }

【讨论】:

  • 太棒了!我现在去试试谢谢
  • 好的,这样就修复了输入的整数数量和系统输出,但是,总和似乎仍然不正确。对于上下文,我输入 10 然后 20 然后 a - 程序说总和是 40
  • @emily sum = input + input; 应该是 sum = sum + input; 这就是为什么你得到错误的总和。
  • 当然应该是?‍♀️我太傻了,谢谢!
  • 请注意,上面的示例仅用于说明目的,有一些极端情况可能会破坏此逻辑,但将留给编码人员作为练习:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多