java - 变量值不变,但我认为应该

标签 java

我正在尝试编写一个平衡支票簿的程序。程序的输入应该是代表支票和存款的数字序列。负数表示支票,正数表示存款。零表示数据结束。每次输入后,它应该打印当前余额。

我可以让它显示余额,并让它显示新的余额,但是当我输入下一个数字时,它又回到原来的余额。这是我的代码:

package assignments;

import java.util.Scanner;
public class Checkbook {

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);

        System.out.print("Enter starting balance: ");
        double balance = keyboard.nextDouble();

        System.out.println();

        System.out.println("Balance: $" + balance);

        for (int i = 0; i < balance; i++) 
        {

            System.out.print("Enter an amount - Zero wil quit the program: ");
            double amount = keyboard.nextInt();

            System.out.println();

            double newBalance = (balance+amount);   
            System.out.println("Balance: " + newBalance);

            if (amount == 0) 
            {
                System.out.println("Your ending balance is: " + newBalance);
                System.exit(i);
            }
        }

    }

}

这是我尝试运行它的示例:

Enter starting balance: 500

Balance: $500.0
Enter an amount - Zero will quit the program: 260

Balance: 760.0
Enter an amount - Zero will quit the program: 20

Balance: 520.0
Enter an amount - Zero will quit the program: 

它只是回到原来的平衡。我究竟做错了什么?

另外,我使用了 System.exit(i),因为我不确定没有它如何让它停止。这是我不使用它的示例:

Enter starting balance: 500

Balance: $500.0
Enter an amount - Zero will quit the program: 0

Balance: 500.0
Your ending balance is: 500.0
Enter an amount - Zero will quit the program:

还有:

Enter starting balance: 500

Balance: $500.0
Enter an amount - Zero will quit the program: 0

Balance: 500.0
Your ending balance is: 500.0

最佳答案

与其将数字分配给新的双倍分配给现有余额,不如将其分配给现有余额。 newBalance 是一个局部变量,它会在每次迭代期间在循环中被覆盖。将 balance 存储在字段或类实例变量 balance 中将保留循环每次迭代的值。

balance = (balance+amount);

balance += amount;  

关于java - 变量值不变,但我认为应该,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21034374/

相关文章:

java - 如何使用相同的 Scanner 方法返回超过 1 个值?

CSV 多项式的 Java.Lang.Double[] 到 Double[] 问题

java - 在 JFrame 的内容上显示具有透明背景的图像

java - 创建对象时如何增加对象数组?

java - 如何以编程方式启动具有多个配置文件的jetty服务器?

java - 相当于 JUnit5 的 @RunWith(JUnitPlatform.class)

java - 这行得通吗?我正在尝试制作一个多维数组,我很确定它可以在 Java 中运行,但我不知道 C++

java - Twilio 调用电话号码屏蔽

java - AngularJS $http get 返回 null 状态 0

java - 本地日期仅获取周日期Java