java - java中如何累加一个值?

标签 java class constructor instance accumulator

现在,我正在学习有关类、构造函数和实例的所有内容。我用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/

相关文章:

c++ - 是否可以在构造函数的成员初始值设定项列表中使用结构化绑定(bind)?

java - 在 Java 中运行构造函数代码之前字段是否已初始化?

java - 在Android中以编程方式查找数据库的路径

java - DAO 可以用于多个表吗?

python - 如何在Python中创建类实例的网络

c++ - 无法编译。头文件。封闭自己的对象定义

syntax - Dart方法签名中的大括号有什么用

java - 如何使用 java-parser 和 java-symbol-solver 推断函数所有参数的类型?

java - 如何在使用自己的证书时启用 PDF LTV 签名 (Adobe java PDFBox)

python - 使用 len() 和 def __len__(self) : to build a class