我是一名新程序员,并尝试制作一个程序,添加所有用户输入的数字。这是代码:
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
有人可以解释为什么会发生这种情况以及如何解决这个问题?谢谢!
答案 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(),这样它只被调用一次,你得到你想要的输出。