运行程序时循环重复两次

时间:2016-08-06 16:34:44

标签: 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
    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

有人可以解释为什么会发生这种情况以及如何解决这个问题?谢谢!

4 个答案:

答案 0 :(得分:4)

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

您第一次通过撰写addIntegers()致电add.addIntegers();  下次您通过撰写addIntegers()来致电System.out.println("the sum is " + this.addIntegers());

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

  

额外建议

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

你可以这样 -

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

 add.addIntegers(); // invoke 1st time
 add.displaySum();  // invoke 2nd time

您明确调用addIntegers()一次,第二次由displaySum()调用

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

public int displaySum(){
    return sum;
}

答案 3 :(得分:0)

你可以从main()中删除addInteger(),这样它只被调用一次,你得到你想要的输出。