用户输入他想要的内容,以及价格和金额

时间:2016-01-19 00:39:50

标签: java receipt

我的程序应该询问用户姓名,价格以及他想要的金额,直到他按下“x”。此时程序应打印收据。

  1. 如何在不知道他希望购买多少物品的情况下保存所有用户输入?
  2. 我正在使用三个班级。我不知道如何将主要级别的名称,金额和价格提供给Eintrag类。
  3. 如何从主要的Kassenzettel课程中拨打列表进行打印?

  4. 另外,我覆盖了to String方法,因为我的收据是“类似超市”,这种格式会在主类中应用吗?

  5. 这是我的主要类:

    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner scanner = new Scanner(System.in);
            System.out.println("What would you like? ");
            String produkt = scanner.nextLine();
            System.out.println("How many pieces do you want?");
            int anzahl = scanner.nextInt();
            System.out.println("How much does " + produkt + "cost?");
            double preis = scanner.nextDouble();
    
    
            //Im not even sure if that should be there
            Kassenzettel list =new Kassenzettel();
            Eintrag carrots = new Eintrag("carrots", 5, 0.40);
            Kassenzettel.add(carrots);
    
    
    
            System.out.println("__________________________________");
            System.out.println("    IHRE RECHNUNG             ");
            System.out.println("__________________________________");
    
    
        }
    }
    

    My Eintrag-class:

    public class Eintrag {
    
        private String produkt;
        private double preis;
        private int anzahl;
    
        public Eintrag(String produkt, int anzahl, double preis) { 
            this.anzahl=anzahl;
            this.produkt=produkt;
            this.preis=preis;   
        }
    
    public int getAnzahl(){
        return this.anzahl;
    }
    public double getPreis(){
        return this.preis * this.anzahl;
    }
    public String getProdukt() {
        return this.produkt;
    }
    
    public void setAnzahl(int anzahl) {
        this.anzahl = anzahl;
    }
    
    public String toString() {
        return (String.format("%-9s %2d x %5.2f EUR",produkt , anzahl, preis 
                                + "%30.2f EUR", anzahl * preis));
    
    
     }
    }
    

    我的Kassenzettel类,应该包含一个Eintrag对象列表 import java.util.ArrayList;

    public class Kassenzettel {
    
    private static ArrayList<Eintrag> kassenZettel;
    private double summe;
    
    // Constructs a new empty grocery list.
    public static void add(Eintrag item) {
        kassenZettel.add(item);
    
    }
    
    @Override
    public String toString() {
        return (String.format("%-9s %2d x %5.2f EUR",kassenZettel 
                                + "%30.2f EUR"
                                + "SUMME", summe));
    
    }
    }
    

1 个答案:

答案 0 :(得分:0)

不确定,如果我有,你想要什么,但你可以使用这样的东西:

将Kassenzettel的toString方法更改为:

double sum = 0;
String ret = "";
for(int i = 0; i< kassenZettel.size(); i++){
  ret += kassenZettel.get(i).toString()+"\r\n";
  sum += kassenZettel.get(i).getPreis();
}
ret += "\r\nSumme: "+sum;

接下来,您必须为用户输入创建一个循环:

Scanner scanner = new Scanner(System.in);

//create an instance of kassenzettel to add your produkts to
Kassenzettel list =new Kassenzettel();

//set variable to check if read or not (not needed if using break!)
boolean readOn = true;

//loop for reading until user inputs x or X
while(readOn){
  System.out.println("What would you like? ");
  String produkt = scanner.nextLine();

  //check if produkt name is X or x => exit the loop 
  if(produkt.equalsIgnoreCase("x")){
    readOn = false;
    break;
  }
  System.out.println("How many pieces do you want?");
  int anzahl = scanner.nextInt();
  System.out.println("How much does " + produkt + "cost?");
  double preis = scanner.nextDouble();

  //add a new item to kassenzettel
  list.add(new Eintrag(produkt, anzahl, preis));
}

//print the output of kassenzettel
System.out.println(list.toString());

修改

并删除:

    //Im not even sure if that should be there
    Kassenzettel list =new Kassenzettel();
    Eintrag carrots = new Eintrag("carrots", 5, 0.40);
    Kassenzettel.add(carrots);

工作代码:

http://pastebin.com/3acgm5St