【问题标题】:Unsure about performing a calculation with two variables不确定使用两个变量执行计算
【发布时间】:2014-12-30 13:33:55
【问题描述】:

这是我到目前为止所得到的。在最后计算出交换价值后,我希望它对用户是否是账户持有人收取佣金(在开始时询问)。就像如果他们不是账户持有人,那么将有 2% 的佣金和 1% 的佣金。我不确定如何使用 AccHolder 变量和 ExcAmount 将其合并到计算佣金中。有什么帮助吗?

if (CurChoice.equals("EUR")) {
            result = ExcAmount / Euro;
            DecimalFormat df = new DecimalFormat("#.##");
            System.out.println(ExcAmount + " in " + CurChoice + "\t=£" + df.format(result));
        } else if (CurChoice.equals("USD")) {
            result = ExcAmount / USAD;
            DecimalFormat df = new DecimalFormat("#.##");
            System.out.println(ExcAmount + " in " + CurChoice + "\t=£" + df.format(result));
        } else if (CurChoice.equals("JPY")) {
            result = ExcAmount / JapYen;
            DecimalFormat df = new DecimalFormat("#.##");
            System.out.println(ExcAmount + " in " + CurChoice + "\t=£" + df.format(result));
        } else if (CurChoice.equals("PLN")) {
            result = ExcAmount / Zloty;
            DecimalFormat df = new DecimalFormat("#.##");
            System.out.println(ExcAmount + " in " + CurChoice + "\t=£" + df.format(result));
        } else {
            System.out.println("");
        }

        double commission = (yn ? 0.01 : 0.02)*result;
        DecimalFormat df = new DecimalFormat("#.##");
        System.out.println("Commission\t=£" + df.format(commission));

        double netPayment = result - commission;
        System.out.println("Total:\t=£" +netPayment);

【问题讨论】:

  • 您的代码有许多不必要的变量和重复的行。关于如何清理它的扩展讨论超出了本网站的范围,但您可能希望将其放在 codereview.stackexchange.com 上。

标签: java variables calculator


【解决方案1】:

声明一次结果。

double result = 0.0;
if (CurChoice.equals("EUR")) {
    result = ExcAmount / Euro;
//...
 } else {
    System.out.println("");
}

double commission = (yn ? 0.01 : 0.02)*result;
System.out.println( "commision: " + ... );
double netPayment = result - commission;

yn 是个糟糕的名字,isAccountHolder 可能更好。

此外,CurChoice 上的开关比 if 更可取。

【讨论】:

  • isAcctHldr 也好不到哪里去。
  • 即使这也不是按照 OP 需要的金额计算佣金。 -1
  • 请注意,我最终的 println 说这包括佣金。可能是想买,而不是卖。对不起。
  • 0.01 或 0.02 乘以结果 => 佣金。结果 - 佣金 => netPayment。
  • 我认为 - 很抱歉造成混乱 - 现在是正确的。
【解决方案2】:

你在哪里定义 yn 如下:

boolean yn;

用 true 初始化它(如下所示),因为不允许用户输入除 y/n 以外的字符串。

boolean yn = true;

看完金额:

int ExcAmount = keybStr.nextInt();

添加以下行来计算佣金,结果如下:

double result = 0.;//default value of result

//do the calculation 

if (yn) {
   result *= 0.01d;
} else { 
   result *= 0.02d;
}

现在将所有对结果的重新声明(如double result)删除为仅result,因此我们只需将转换后的值添加到佣金中。

【讨论】:

  • 没找到你。同维度是什么意思?
  • 我们到了。收回 -1
【解决方案3】:

在结尾

if (MenuChoice == 1) {

你应该设置这组条件:

if (yn) ExcAmount += 0.01 * ExcAmount;
else ExcAmount += 0.02 * ExcAmount;

这是您要查找的条件。

【讨论】:

  • 在main()开头定义“yn”为false,ExcAmount为0
  • 那行不通。当我选择“n”作为帐户持有人时,它崩溃了。你适合编辑上面的代码以便我明白你的意思吗?
  • 选择“n”时的崩溃错误信息是什么?
  • 但它打印出一条消息吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
  • 1970-01-01
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 2015-03-19
  • 1970-01-01
相关资源
最近更新 更多