2016-04-22 5 views
0

Мне действительно нужна помощь, я новичок в программировании. Каждый раз, когда я запускаю свой код, я получаю эту проблему. Conversion = '-'.Java Исключение в потоке «main» java.util.UnknownFormatConversionException: Conversion = '-'

Вот код:

Ее код для продукта

public abstract class Product implements Comparable<Product>, Serializable{ 
private Discount dR; 
private String description; 
private double price; 
private int numInStock; 
private Date releaseDate; 
private int rating; 

public Product() { 

} 

А вот код Discount который Дт

public class Discount { 
private Product pro; 
private Customer cust; 
private double price; 
private int quantity; 
private double getDiscount; 
private char discountRate; 

public Discount() { 
    super(); 
} 



public String toStringD() { 
    NumberFormat nf = NumberFormat.getCurrencyInstance(); 
    String string; 

    string = "ALL PRODUCT SOLD"; 

    string = string + String.format("%-35s %-20d", description, dR.getQuantity()) + 
      "\t\t" + nf.format(price) + "\t" + String.format("%-15f %-15d", dR.getPrice(), releaseDate); 
    return string; 
} 

Здесь проблема

java.util.UnknownFormatConversionException: Conversion = '-' 
+0

Конкатенация и форматирование, а? 'str + String.format (" fmt ", arg1, arg2)' может быть написано более эффективно как 'String.format ("% sfmt ", str, arg1, arg2)'. –

+0

Попробуйте сначала напечатать строки без выравнивания по левому краю, а затем беспокоиться о форматировании –

+0

Я не думаю, что вы скопировали все правильные значения ... 'releaseDate' не может быть напечатано из класса Discount –

ответ

0

j ava.util.UnknownFormatConversionException: Конверсия = «-»

выбрасываются при попытке форматировать строку, используя другой тип из тех, что вы объявлены в строке, то есть:% D% F и т.д.

Чтобы подтвердить это, я запускаю свой метод в своем явлении, изменяя параметры в строковых форматах для жестко заданных параметров правильного типа.

Я мог бы запустить ваш метод без проблем.

Поэтому либо:

1) "описание" не является строкой. 2) dR.getQuantity() возвращает float или другие нецелые типы. 3) dr.getPrice() не возвращает float 4) releaseDate не возвращает целое число.

Поскольку вы не предоставили остальную часть своего кода, я не могу точно сказать, какие из этих проблем вам неприятны, но я думаю, что с этой информацией вы можете отслеживать переменную, которая дает вам проблемы.

Смежные вопросы