-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