-1
我有以下代码:如何获得parseDouble忽略 “%” - Java的
preferredCustomers[count]=new PreferredCustomer(fileData[1],fileData[2],Integer.parseInt(fileData[0]),Double.parseDouble(fileData[3]),(Double.parseDouble(fileData[4])));
将被读行:
778234米妮165.50 5%
在文本文件中。我的问题是,当我尝试编译我的程序,我得到了以下错误:
run:
java.lang.NumberFormatException: For input string: "5%"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at customer.Main.main(Main.java:84)
BUILD SUCCESSFUL (total time: 0 seconds)
我不能改变文本文档的格式,以及相应的类有以下几点:
public class PreferredCustomer extends Customer {
// Member variable discount
double discountPercentage;
// Default constructor
public PreferredCustomer() {
super();
}
// Parameterized overloaded constructor
// Constructor chaining calling parent class constructor
public PreferredCustomer(String first_name, String last_name, int guestID, double amountSpent, double discountPercentage) {
super(first_name, last_name, guestID, amountSpent);
//discountPercentage = discountPercentage.replace("%", "");
this.discountPercentage = discountPercentage;
// TODO Auto-generated constructor stub
}
// Getter and setter
public double getDiscountPercentage() {
return discountPercentage;
}
public void setDiscountPercentage(double discountPercentage) {
this.discountPercentage = discountPercentage;
}
如何我可以重新编写代码来忽略这个“%”符号,这样它可以让程序编译?我在NetBeans中运行,谢谢。
你听说过['子()'](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#substring-int-int- )? – Andreas
请勿使用它。使用'java.text.DecimalFormat.parse()'。 – EJP
只需在解析之前关闭'%'即可。 – Carcigenicate