我正在尝试编写一个平衡支票簿的程序。程序的输入应该是代表支票和存款的数字序列。负数表示支票,正数表示存款。零表示数据结束。每次输入后,它应该打印当前余额。
我可以让它显示余额,并让它显示新的余额,但是当我输入下一个数字时,它又回到原来的余额。这是我的代码:
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/