Класс / объекты Java выводят дважды с (,) и меняют десятичные знаки - PullRequest
0 голосов
/ 27 февраля 2019

Как мне вводить двойные числа, такие как 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 евро)

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

использовать 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}));
     }
}
0 голосов
/ 27 февраля 2019

Для заданного вами ввода одним из решений может быть реализация 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)");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...