有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java循环中的用户输入和求和问题

在我开始之前,我想感谢大家的帮助。我建议不要给我代码,而是告诉我错误在哪里。谢谢

在过去的几个小时里,我一直在努力解决这个问题,但我似乎看不出哪里出了问题。我试图继续请求用户输入,直到用户输入-1,这是sentinel值。输入sentinel值后,程序显示用户输入的整数及其总和。由于我不知道的原因,打印值仅为-1,并且总和完全偏离。这是我的密码:

import java.util.Scanner;

public class UserSum
{
    public static void main(String args[])
    {
        //prompt user to enter numbers
        Scanner userInput = new Scanner(System.in);
        System.out.print("Enter positive integers. Enter -1 to stop. ");
        int integers = userInput.nextInt();

        //sum is initially set to 0
        int sum = 0;

        //execute commands as long as the input does not equal -1
        while(integers != -1)
        {
            //keep gathering user input
            integers = userInput.nextInt();
            sum += integers;
        }

        //print the results to the user
        System.out.println("You entered: " + integers + ", ");
        System.out.println("Sum is: " + sum);
    }
}

共 (4) 个答案

  1. # 1 楼答案

    你称之为整数,但它实际上不是一个整数列表,只是最后读取的一个。还要检查你总结的地方。你不求第一个读到的数字的和,但求最后一个(-1)。。。很容易看到,因为你有两行读输入,这已经是可疑的(见循环的另一个答案)

  2. # 2 楼答案

    求和值输出不正确的原因是,在求和之前读入了两个输入。一次读取完全在while循环之前完成,一次读取在while循环中相加之前完成。您输入的第一个值永远不会保存在总和中

    尝试实现类似于下面的方法

    int sum = 0;
    int value = 0;
    
    while (value != -1) {
       sum += value;
       value = input.nextInt();
       sysout(value);
    }
    
    sysout(sum);
    
  3. # 3 楼答案

    ArrayList是一种结构,在尝试存储多个值时,它适用于所有意图和目的。谷歌是你的朋友,请谷歌帮你一个忙,你就可以使用ArrayList了。在循环中,您可以添加它,并存储所有这些内容

  4. # 4 楼答案

    根据您的要求,我不会发布代码来帮助您,但会提供有关解决方法的建议

    首先,处理用户输入的方式有一个很好的开端,但它可能不是100%正确。我认为“while”循环很好。问题是,您正在读取“第一个整数”,而不是将其添加到总和中,然后在通过所述“整数”增加总和之前读取“下一个整数”

    因此,我建议依次切换while循环中的整数和求和行,或者首先声明sum等于整数

    至于打印所有使用的整数,您必须使用数组或数组列表。首先确定用户输入的int数,不包括'-1',并在此基础上声明一个数组。然后将所有整数读入数组,并在最后求和。总的来说,我认为这是一种更有效的解决方法

    我希望这有帮助

    不带数组

    如果不使用数组,可以使用字符串并将用于计算和的整数追加到字符串中