小数点的Java点和逗号

时间:2013-12-02 17:00:42

标签: java comma

我遇到了一个小问题,就是我的程序只在需要小数时才接受点。

我不会用逗号替换点,而是我想让它接受点和逗号。我需要将它应用于字符串“金额”,之后转换为双倍!帮助帮忙! 关于奥利弗

    public static void main(String[] args){

        double euro, usd, gpb, dkk, done;

        Scanner input = new Scanner(System.in);

        String temp = JOptionPane.showInputDialog("Convert from " +"USD, GBP, DKK or EURO?");

        String tempp = JOptionPane.showInputDialog("To " +"USD, GBP, DKK or EURO?");

        Map<String, Double> lookUpMap = new HashMap<String, Double>(){{
            put("EURO", new Double(7.46));
            put("USD", new Double(5.56));
            put("GBP", new Double(8.84));
            put("DKK", new Double (1.0));
            }};


        String amount = JOptionPane.showInputDialog("amount of " +(temp));
        double amountt = Double.parseDouble(amount);
        done = (lookUpMap.get(temp.toUpperCase()) / lookUpMap.get(tempp.toUpperCase())) * amountt;

        JOptionPane.showMessageDialog(null, "It is " +done + " " +(temp),"Final amount of " + (temp), JOptionPane.PLAIN_MESSAGE);

        String exit = JOptionPane.showInputDialog("Do u want to rerun program? YES or NO");
        if(exit.equalsIgnoreCase("YES")){
            RerunGUI.main(args);
        }else{
            System.out.println("");
        }

    }

}

3 个答案:

答案 0 :(得分:4)

如果要解析具有逗号和小数的美元值,可以使用NumberFormat并使用使用该数字格式的区域设置。

     String value1 = "1,222.34";
     String value2 = "2,334.45";

     double d1 = 0;
     double d2 = 0;
     try {
        NumberFormat usFormat = NumberFormat.getNumberInstance(Locale.US);
        d1 = usFormat.parse(value1).doubleValue();
        d2 = usFormat.parse(value2).doubleValue();
     } catch(ParseException ex) {
         ex.printStackTrace();
     }

     System.out.println(d1 + d2);  // Output 3556.79

有关不同区域设置的列表,请参阅 Here

答案 1 :(得分:1)

我认为您可能想尝试对收到的值使用String.replaceAll()命令,然后将值转换为double

double amountt = Double.parseDouble(amount.replaceAll(",","."));

答案 2 :(得分:0)

这有点难看,但它似乎是你想要的:

double amountt = Double.parseDouble(amount.replaceAll(",",".");

这样,解析输入的所有内容(用逗号或点数十进制)。