如何在主类中输入双打,例如4,10?
如果没有,输入4.10后如何将结果打印为4,10?
此外,小数点后的零将丢失,在打印结果后,如何解决?
public static void main(String[] args){
Pizza Rentals = new Pizza("Rentals",4.10);
Pizza Strength = new Pizza("Strength ", 3.10);
Pizza Molissimo = new Pizza("Molissimo", 4.20);
System.out.println(Rentals.getName() + " (" + Rentals.getPrice() + " euros)" );
System.out.println(Strength.getName() + " (" + Strength.getPrice() + " euros)" );
System.out.println(Molissimo.getName() + " (" + Molissimo.getPrice() + " euros)" );
}
课程
class Pizza{
String name;
double price ;
Pizza(String name, double price){
this.name = name;
this.price = price;
}
public String getName(){
return name;
}
public double getPrice() {
return price;
}
public String toString() {
return super.toString() ;
}
}
期望结果;
租金(4,10欧元) 力量(3,10欧元) 莫里西莫(4,20欧元)
答案 0 :(得分:0)
对于给定的输入,解决方案之一可以是实施DecimalFormat
,如下所示:
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#.00");
DecimalFormatSymbols sym = DecimalFormatSymbols.getInstance();
sym.setDecimalSeparator(',');
df.setDecimalFormatSymbols(sym);
Pizza Rentals = new Pizza("Rentals", 4.10);
Pizza Strength = new Pizza("Strength ", 3.10);
Pizza Molissimo = new Pizza("Molissimo", 4.20);
System.out.println(Rentals.getName() + " (" + df.format(Rentals.getPrice()) + " euros)");
System.out.println(Strength.getName() + " (" + df.format(Strength.getPrice()) + " euros)");
System.out.println(Molissimo.getName() + " (" + df.format(Molissimo.getPrice()) + " euros)");
}
答案 1 :(得分:0)
使用java.text.MessageFormat
和正确的java.util.Locale
示例为JUnit-Test:
import java.text.MessageFormat;
import java.util.Locale;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author jk
*/
public class MessageFormatTest {
@Test
public void hello() {
MessageFormat fmt_EN = new MessageFormat("{0,number,#0.00}", Locale.ENGLISH);
assertEquals("4.10", fmt_EN.format(new Object[] {4.10}));
MessageFormat fmt_DE = new MessageFormat("{0,number,#0.00}", Locale.GERMAN);
assertEquals("4,10", fmt_DE.format(new Object[] {4.10}));
}
}