Java 当我运行程序时,循环重复两次

Java 当我运行程序时,循环重复两次,java,loops,Java,Loops,我是一个新的程序员,试图制作一个程序,添加所有用户输入的数字。代码如下: import java.util.Scanner; import java.io.*; public class Adding { private int numOfInt, newInt; /** * Constructor for objects of class Adding */ public Adding() { // initialise instance variables Scanne

我是一个新的程序员,试图制作一个程序,添加所有用户输入的数字。代码如下:

import java.util.Scanner;
import java.io.*;
public class Adding
{
private int numOfInt, newInt;

/**
 * Constructor for objects of class Adding
 */
public Adding()
{
    // initialise instance variables
    Scanner console = new Scanner( System.in );
    System.out.print("How many integers will be added?");
    numOfInt = console.nextInt();
    newInt = 0;
}
public int addIntegers()
{
    int count = 0;
    int sum = 0;
    while( count <= numOfInt )
    {
        System.out.println("The count is: " + count + " and the current sum is: " + sum);
        count = count + 1;
        Scanner console = new Scanner( System.in );
        System.out.println("Enter an integer: ");
        newInt = console.nextInt();
        sum = sum + newInt;
    }
    return sum;
}
public void displaySum()
{
            System.out.println("the sum is " + this.addIntegers());
}
}
但是,循环重复两次(如下面的输入所示,经过编辑以节省空间),实际上忽略了输入的第一组数字:

将添加多少个整数?3

计数为:0,当前总和为:0

输入一个整数:1

计数为:1,当前总和为:1

输入整数:2

计数为:2,当前总和为:3

输入一个整数:3

计数为:3,当前总和为:6

输入一个整数:1

计数为:0,当前总和为:0

输入整数:2

计数为:1,当前总和为:2

输入一个整数:3

计数为:2,当前总和为:5

输入一个整数:4

计数为:3,当前总和为:9

输入一个整数:5

总数是14


有人能解释为什么会发生这种情况以及如何解决它吗?谢谢大家!

原因是调用了两次
addIntegers
,一次在
main
中,一次在
displaySum
中。因此,循环也会执行两次。

原因是调用了两次
addIntegers
,一次在
main
中,一次在
displaySum
中。因此,循环也会执行两次

 add.addIntegers(); // invoke 1st time
 add.displaySum();  // invoke 2nd time
您显式调用了一次
addIntegers()
,第二次由
displaySum()调用

添加整数和显示总和是两个不同的职责,您最好将它们拆分为两个函数。使
displaySum()
仅显示总和,而不是添加整数。您可以在Class
Adding
中创建实例变量
sum
,并将displaySum()更改为

您显式调用了一次
addIntegers()
,第二次由
displaySum()调用

添加整数和显示总和是两个不同的职责,您最好将它们拆分为两个函数。使
displaySum()
仅显示总和,而不是添加整数。您可以在Class
Adding
中创建实例变量
sum
,并将displaySum()更改为


您可以从main()中删除addinger(),这样它只被调用一次,就可以得到所需的输出

您可以从main()中删除addInteger(),这样它只被调用一次,就可以得到所需的输出

循环重复两次,因为您正在调用
addingers()
两次

第一次通过编写
add.addIntegers()调用
addIntegers()
下次您通过编写
System.out.println调用
addIntegers()
(“总和是”+this.addIntegers())

this.addIntegers()
再次调用方法
addIntegers()

额外建议

您可以通过在类级别实例化scanner对象来使用scanner对象,即不需要在代码中实例化scanner对象两次

你可以这样走--


循环重复两次,因为您调用了两次
addIntegers()

第一次通过编写
add.addIntegers()调用
addIntegers()
下次您通过编写
System.out.println调用
addIntegers()
(“总和是”+this.addIntegers())

this.addIntegers()
再次调用方法
addIntegers()

额外建议

您可以通过在类级别实例化scanner对象来使用scanner对象,即不需要在代码中实例化scanner对象两次

你可以这样走--


循环应该重复多少次?我建议您学习如何使用调试器逐步检查代码以了解发生了什么。每次调用
addIntegers
都将执行一次循环。计算代码中的
addIntegers
调用数。另外,通过使用
循环应该重复多少次?我建议您学习如何使用调试器逐步检查代码以了解发生了什么。每次调用
addIntegers
都将执行一次循环。计算代码中的
附加程序调用数。另外,使用

 add.addIntegers(); // invoke 1st time
 add.displaySum();  // invoke 2nd time
public int displaySum(){
    return sum;
}
public class Adding
{
private int numOfInt, newInt;
Scanner console = new Scanner( System.in );