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()
仅显示总和,而不是添加整数。您可以在ClassAdding
中创建实例变量sum
,并将displaySum()更改为
您显式调用了一次addIntegers()
,第二次由displaySum()调用
添加整数和显示总和是两个不同的职责,您最好将它们拆分为两个函数。使displaySum()
仅显示总和,而不是添加整数。您可以在ClassAdding
中创建实例变量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 );