У меня есть следующий код:Как получить 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