我遇到了一个小问题,就是我的程序只在需要小数时才接受点。
我不会用逗号替换点,而是我想让它接受点和逗号。我需要将它应用于字符串“金额”,之后转换为双倍!帮助帮忙! 关于奥利弗
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("");
}
}
}
答案 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(",",".");
这样,解析输入的所有内容(用逗号或点数十进制)。