现在,我正在学习有关类、构造函数和实例的所有内容。我用java编写了一小段代码,但我一直坚持这个特定的代码。
***我的代码输出应该是这样的:
输出
输入金额:500
您想再次输入金额吗?(y/n):y
输入金额:45
您想再次输入金额吗?(y/n):n
总计:545
***但是我的输出是这样的:
输出
输入金额:500
您想再次输入金额吗?(y/n):y
输入金额:45
您想再次输入金额吗?(y/n):n
总计:45
***它不会添加我在整个循环中输入的金额,而是给我最后输入的金额。
这是第一个代码:
public class Test {
private double money;
public Test(){
}
public void addPoints(double money1){
money += money1;
}
public int getMoney(){
return money;
}
}
第二个代码在这里:
import java.util.Scanner;
public class testBody {
public static void main(String[]args){
double cashMoney;
String response = "";
Scanner hold = new Scanner(System.in);
do{
System.out.print("Enter amount:");
cashMoney = hold.nextDouble();
Test cashPlus = new Test();
cashPlus.addPoints(cashMoney);
System.out.print("Do you want to enter amount again?(y/n):");
response = hold.next();
if(response.equalsIgnoreCase("n")){
System.out.print("TOTAL: " + cashPlus.getMoney());
}
}while(response.equalsIgnoreCase("y"));
}
}
最佳答案
您应该在循环之前而不是在每次迭代中创建 Test
实例。
Test cashPlus = new Test();
do {
System.out.print("Enter amount:");
cashMoney = hold.nextDouble();
cashPlus.addPoints(cashMoney);
System.out.print("Do you want to enter amount again?(y/n):");
response = hold.next();
if(response.equalsIgnoreCase("n")){
System.out.print("TOTAL: " + cashPlus.getMoney());
}
} while(response.equalsIgnoreCase("y"));
每次创建新的测试实例时,cashMoney
都会初始化为 0(因为每个实例都有其自己的该成员值)。当您最终打印 cashPlus.getMoney()
时,您将打印您创建的最后一个实例的值,您只添加了您输入的最终金额。
关于java - java中如何累加一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30781579/