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

Java:循环,用户输入的整数不正确总计条目

阎裕
2023-03-14

我需要编写一个程序,要求输入整数和循环,直到输入为负整数,然后程序结束。此外,循环需要计算正整数项的总数,并将所有项相加。代码的计数部分似乎工作正常,但我获取所有条目总和的方法不起作用。

我在代码中尝试的是将total=total输入放在循环的末尾,但这在测试时并没有给出正确的总和。

此外,我的类型安全块只适用于第一次进入;如果我在整数后输入一个字母,程序就会崩溃。这不应该在每个条目的开头回到类型安全块吗?

我在底部粘贴了一份我的输出。

任何帮助都将不胜感激。

    int count   =   0;
    int total   =   0;

    Scanner scan = new Scanner(System.in);

    System.out.print( "Enter an integer, negative to quit: " );

    while(!scan.hasNextInt())
            {
                scan.nextLine();
                System.out.println( "That is not an integer." );
                System.out.println( "Please enter an integer." );
            }

    int input = scan.nextInt();

    while (input >= 0)
        {
            System.out.print( "Next integer: " );

            input = scan.nextInt();

            count++;
            total   =   total + input;
        }

    System.out.println( "Count: " + count ); 
    System.out.println( "Total: " + total );

当我运行代码时,我得到以下输出:

运行:

输入一个整数,如果是负数,则退出:h

这不是一个整数。

请输入一个整数:

1.

下一个整数:2

下一个整数: 3

下一个整数:-1

计数:3

总数:4

构建成功(总时间:10秒)

共有2个答案

邢硕
2023-03-14

您需要在每次迭代中检查下一个条目是否为整数。另外,在要求下一个整数之前,需要对初始的整数进行求和:

int input = 0;
int count = 0;
int total = 0;
do{
    System.out.print("Enter an Integer: ");
    total += input;
    if(!scan.hasNextInt()) {
        scan.nextLine();
        System.out.println( "That is not an integer." );
        input = 0;
     } else {
         input = scan.nextInt();
         count++;
     }
 } while(input >= 0);

System.out.println("Count: " + (count - 1));
System.out.println("Total: " + total);

淳于星宇
2023-03-14

交换操作顺序。首先求和并计数,然后得到一个新的输入:

while (input >= 0) {
    total = total + input;
    count++;

    System.out.print("Next integer: ");
    input = scan.nextInt();
}

当前代码丢弃第一个输入1,并开始与第二个输入2相加和计数。

 类似资料:
  • Imma java新手,所以我试着学东西。我创建了一个布尔方法,这是一个小的骰子游戏。我需要这个方法是从main方法调用,并继续玩,而返回值是真的(游戏是赢的),但停止执行,如果返回值是假的。我也需要多少次球员赢了。所以我创造了这样的东西: 初始化为私有静态int

  • 我正在编写一个python游戏,它有以下功能可以向用户询问。 最多可以有4名玩家(最少1名玩家,最多4名玩家) 它会问玩家的名字。如果名称已存在,程序将提示“名称已在列表中”,并要求再次输入名称 如果播放器在播放器名称输入中输入空字符串,它将退出。 它会询问玩家想要玩多少n个随机数字(使用randint(开始,停止)。最多只允许3位数字 我知道我必须使用

  • 问题内容: 我需要让用户输入一个数字以用作范围的开始,然后输入另一个数字作为范围的结束。起始编号必须为0或更大,结束编号不能大于1000。两个数字都必须被10整除。我找到了满足这些条件的方法,但是如果不满足这些条件,我的程序只会告诉用户他们的输入不正确。我是否可以对它进行编码,以便在用户输入后进行检查以确保满足条件,如果条件没有环回,请再次输入。这是我到目前为止的代码。 问题答案: 轻松做:

  • 我需要要求用户输入一个数字作为范围的开始,然后输入另一个数字作为范围的结束。开始数必须大于等于0,结束数不能大于1000。两个数字都必须能被10整除。我已经找到了满足这些条件的方法,但是如果不满足这些条件,我的程序只会告诉用户他们的输入不正确。我是否可以对其进行编码,以便在用户输入后,它将检查以确保满足条件,如果不满足条件,则返回并再次输入。这是我目前掌握的代码。

  • 需要一些专家的建议。首先,这里是我的代码: 我的问题是:当我输入一个用户号码如“3”时,提示我的代码只打印一个__当我希望它打印指定的号码。我无论如何也想不出来。 我是英语专业的,所以这不是我的强项:(形状应该是菱形的。)