我的新手代码并没有减去这两个变量

时间:2013-01-18 23:44:10

标签: java

我很蠢。

import java.util.Scanner;
public class ATM {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double withdraw = scanner.nextDouble();
double balance = scanner.nextDouble();
int withdraw = 0; int balance;
if (withdraw % 5 == 0 && withdraw<(balance-.5)) {
    balance = balance - (withdraw + .5); 
    System.out.println(balance);
}
 else {
     System.out.println(balance);
 }}}

我正在尝试这样做,以便在提取费用时扣除提款金额减去余额。不幸的是,它只减去$ .50而不减去提款。提前谢谢。

固定代码

import java.util.Scanner;
public class ATM {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double withdraw = scanner.nextDouble();
double balance = scanner.nextDouble();
if (withdraw % 5 == 0 && withdraw<(balance-.5)) {
    balance -= (withdraw + .5); 
    System.out.println(balance);
}
 else {
     System.out.println(balance);
 }}}

3 个答案:

答案 0 :(得分:2)

这是算法https://stackoverflow.com/a/14387552/1083704

您遇到同样的问题 - 复杂表达式中的错误,包括使用未知类型。你必须做同样的事情来调试程序 - 使用中间变量将oneliner简化为多个简单表达式。然后,您可以逐步调试代码并观察这些中间值。作为程序员意味着成为一名黑客,如果没有学习调试,你就不会成为黑客。

答案 1 :(得分:0)

你在哪里设置撤销变量?我看那里,听起来你正在为一个没有赋值大于0的变量添加.5。在更复杂的代码中测试的一种真正简单的方法是在代码中设置撤销说在您的平衡方程中使用它之前的值为5,这样您可以判断问题是否与您的等式或者撤销变量有关,该等式看起来很稳固。另外,你可以做到

balance -= (withdraw + .5)

答案 2 :(得分:0)

在给出如此少的信息时调试代码相当困难;但我最好的猜测是初始化错误 - 撤销尚未正确初始化,而且只是我认为是默认值 0

但是可以肯定的是,我们需要在打印声明之前知道撤销等于什么。 您可以在添加余额之前添加打印声明,如下所示:

System.out.println(withdraw);
balance -= (withdraw + .5);
System.out.println(balance);

然后看撤回是否&gt; 0在运行时?如果不;在计算余额之前检查它是否设置为您的提款值。

更好的方法是发布完整的代码段,这样我们就可以看到自己。

N.B。 a - = b是a = a - b

的简写