繁体   English   中英

新手帮助 - Java货币计算器

[英]Newbie help - Java currency calculator

我是java的新手,我的第一个任务是制作一个从美元到NOK(Norsk Kroner)的货币计算器。 该计划应该计算并显示如何最有效地兑现所有挪威支付单位的金额。 我一直在努力,但无处可去。 有谁可以帮我解决我的代码?

继承我的代码:

/*
 * Valutacalc
 *
 */

import static java.lang.System.*;
import static java.lang.Integer.*;
import static javax.swing.JOptionPane.*;

public class Kalkulator {
    public static void main(String[] args) {
        // Leser verdi fra brukeren
        String tallTxt = showInputDialog("Antall US Dollar");
        int dollar = parseInt(tallTxt);
        double valuta = 5,49;
        // Beregner svarene av regnearbeidet /
        int svar1 = dollar * valuta;
        //Skriv ut resultat
        showMessageDialog(null,   dollar  * " * " valuta " = " + svar1 + "\n");
    }
}

更换

double valuta = 5,49;

通过

double valuta = 5.49;

因为java中的小数点是'。' 不是','。

也许你也想把svar1类型改为double

也改变了:

    showMessageDialog(null,   dollar  * " * " valuta " = " + svar1 + "\n");

    showMessageDialog(null,   dollar  + " * " + valuta + " = " + svar1 + "\n");


孔码:

public static void main(String[] args) {
    // Leser verdi fra brukeren
    String tallTxt = showInputDialog("Antall US Dollar");
    int dollar = parseInt(tallTxt);
    double valuta = 5.49;
    // Beregner svarene av regnearbeidet /
    double svar1 = dollar * valuta;   
    //Skriv ut resultat
    showMessageDialog(null,   dollar  + " * " + valuta + " = " + svar1 + "\n");
}

将产品转换为double值,即: int svar1 = (int)(dollar * valuta); ,但是你失去了分数部分。 更好的方法是将svar1声明为doubledouble svar1 = dollar * valuta 然后,当您打开消息对话框时,需要正确构造消息字符串。 因此,如果要将不同的因子连接成一个字符串,则需要使用+运算符(并且必须确保这些因子中至少有一个实际上是一个字符串)。 所以你需要:

showMessageDialog(null, dollar + " * " + valuta + " = " + svar1 + "\\n");

但是如果你想要更多地控制格式,你应该考虑使用String类的format方法(从1.5开始; 参见javadoc for String.format说明 )。 最终你可以使用这个:

showMessageDialog(null, String.format("%0.2f * %0.2f = %0.2f\\n", dollar, valuta, svar1));


好吧,你现在真的要求别的东西了。 好的,看到这个(带有一个使用示例):

private static final int[] PAYMENT_UNITS = {
    1000, 500, 200, 100, 50, 20, 10, 5, 1
};

public static void main(final String[] args) {
    printCashOut(split(2004307));
}

private static final void printCashOut(final int[] cacheOut) {
    int total = 0;
    for (int i = 0; i < PAYMENT_UNITS.length; i++) {
        final int p = cacheOut[i] * PAYMENT_UNITS[i];
        System.out.printf("%4d x %4d = %8d\n",
                cacheOut[i],
                PAYMENT_UNITS[i],
                p
            );
        total += p;
    }
    System.out.printf("       TOTAL: %8d\n", total);
}

private static final int[] split(final int amount) {
    if (amount < 0) {
        return null;
    }
    final int[] cashOut = new int[PAYMENT_UNITS.length];
    int rest = amount;
    for (int i = 0; i < PAYMENT_UNITS.length; i++) {
        cashOut[i] = rest / PAYMENT_UNITS[i];
        rest -= cashOut[i] * PAYMENT_UNITS[i];
    }
    return cashOut;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM