我是一名新程序员,并尝试制作一个将所有用户输入数字相加的程序。这是代码:

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());
}
}


这是主要的第二类:

import java.util.Scanner;
import java.io.*;
public class AddingMain
{
public static void main( String[] args )
{
   Adding add = new Adding();
   add.addIntegers();
   add.displaySum();
}
}


但是,循环重复两次(如下面的输入所示,已进行编辑以节省空间),实际上忽略了输入的第一组数字:


  将添加多少个整数?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()

您第一次通过编写addIntegers()调用add.addIntegers();
 下次您通过写addIntegers()调用System.out.println("the sum is " + this.addIntegers());时。

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


  额外建议


您可以通过仅在类级别实例化Scanner对象来使用扫描器对象,即您无需在代码中实例化两次扫描器对象。

你可以这样

public class Adding
{
private int numOfInt, newInt;
Scanner console = new Scanner( System.in );

关于java - 运行程序时,循环重复两次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38806448/

10-08 21:46