2017-01-19 6 views
-2

請求書を印刷する際に、数量を使って私がスターターメソッドで注文したものを印刷したいと考えています。どのように私はそれをやるのだろうか?全体の問題が非常に大きいので、私は自分のプログラムのインスタンスしか書いていません。請求時に購入した商品を印刷するにはどうすればよいですか?

ありがとうございます。

static void Bill() 
    { 

     System.out.println("\f"); 
     System.out.println("*********************************************************"); 
     System.out.println("*********************************************************"); 
     System.out.println("**************************BILL***************************"); 
     System.out.println(ob); 
     System.out.println("Your phone number - "+j); 
     int Z = (int)(Math.random()*10000000); 
     System.out.println("Bill number is "+Z); 
     System.out.println("The total bill amount is Rs."+sum); 
     System.out.println(); 
     System.out.println("Hope you enjoyed. Visit us again soon!"); 
     Food=0; 
    } 

     static void Starters() 
    { 
     System.out.println("You have selected Starters"); 
     System.out.println(); 
     System.out.println("1. Spring Rolls    - Rs 350"); 
     System.out.println("2. Onion Rings    - Rs 350"); 
     System.out.println("3. Fried Raviolli    - Rs 400"); 
     System.out.println("4. Gorgonzola     - Rs 400"); 
     System.out.println("5. Fresh Ricotta Crostini  - Rs 475"); 
     System.out.println("6. Potato Fritters   - Rs 500"); 
     System.out.println(); 
     System.out.println("Enter your desired option"); 
     starterOption=sc.nextInt(); 
     System.out.println("Enter quantity"); 
     quantity=sc.nextInt(); 
     switch(starterOption) 
     { 
      case 1: 
      s1 = quantity * 350; 
      break; 
      case 2: 
      s2 = quantity * 350; 
      break; 
      case 3: 
      s3 = quantity * 400; 
      break; 
      case 4: 
      s4 = quantity * 400; 
      break; 
      case 5: 
      s5 = quantity * 475; 
      break; 
      case 6: 
      s6 = quantity * 500; 
      break; 
      default: 
      System.out.println("You haven't ordered anything"); 
      break; 
     } 
     System.out.println("Do you want to order anything else? Y/N"); 
     A = sc1.next(); 
     if(A.equalsIgnoreCase("Y")) 
     { 
      System.out.println("Do you want to order from the same section? Y/N "); 
      F=sc.next(); 
      if(F.equalsIgnoreCase("Y")) 
      { 
       sum=s1+s2+s3+s4+s5+s6; 
       Starters(); 
      } 
      else 
      { 
       sum=s1+s2+s3+s4+s5+s6; 
       Food_Items(); 
      } 
     } 
     else 
     { 
      sum=s1+s2+s3+s4+s5+s6; 
      Bill(); 
     } 
    } 
+0

それは非常に長いコードです。 – msagala25

+2

あなたはまた、合計価格だけでなく、顧客が注文したものを保存しておくべきです。また、javaのコレクションで読んで、あなたはあまりにも多くの変数を持っています。 https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html – Idos

+0

私の質問に直接投票するのではなく、何かが間違っているか、このサイトのルールに違反しているかどうか教えてください。私はこのサイトを初めて利用しています! –

答えて

0

前述のとおり、これは非常に単純な問題の非常に長いコードです。

注文したものを印刷するときは、変数に保存する必要があります。配列。または、コレクションに示唆されているように。リスト。コードを展開したのと同じ方法で展開することができます。しかし、コードを修正することを強くお勧めします。

0

コードにいくつか改善があります。請求書のすべての要素を表示する場合は、すでに注文しているものを保存する必要があります。注文するたびに、要素を追加することができますList

リストにオブジェクトを格納する必要がありますので、料理用のオブジェクトを作成する必要があります。あなたが列挙型の異なる種類を持ってしようとしている

for (Starters starter : Starters.values()) { 
    System.out.println(starter.getName() + " " starter.getCode()); // Just an example, modify to fit your format 
} 

と:そして、あなたはこのようなあなたのメニューを表示

enum Starters { 
    SPRING_ROLLS("Spring Rolls", "Rs 350", 5), 
    FRIED_RAVIOLLI("Fried Raviolli", "Rs 400", 9), 
    ... // All other starters... 

    String name; 
    String code; 
    int price; 

    public Starters(String name, String code, String price) { 
     this.name = name; 
     this.code = code; 
     this.price = price; 
    } 

    public String getName() { 
     return name; 
    } 

    public String getCode(){ 
     return code; 
    } 

    public int getPrice(){ 
     return price; 
    } 
} 

Enumsが、これは初心者のためのいくつかの例かもしれない、あなたのアプリケーションにappropiateのようです同じ種類のオブジェクトをリストに追加するとします。あなたはこのようなリストを初期化することができます

public interface Orderable { 
    public String getName(); 
    public String getCode(); 
    public String getPrice(); 
} 

List<Orderable> orders = new ArrayList<>(); 

をそして列挙型が必要(このようなリストに要素を追加あなたは、インターフェイスを実装するために、このためのインタフェースを使用すると、すべての列挙型を作ることができます)オーダー可能なインタフェースを実装します

orders.add(Starters.SPRING_ROLLS); 
order.add(Desserts.CHEESE_CAKE); 
... 

あなたが法案を表示したい場合は、リストを反復処理し、注文を表示することができます。

int totalPrice = 0; 
for (Orderable order : orders) { 
    System.out.println(order.getName() + " - " order.getPrice()); 
    totalPrice += order.getPrice(); 
} 
System.out.println("Total price: "); 
0

私はHashMapを使用することをお勧めし、あなたの問題に対する可能な解決策は、可能性がin this link

チュートリアルの例をお読みください -

はクラスで変数を宣言し、望ましい「プライベート」

private static HashMap<String, Integer> Starters = new HashMap<String, Integer>(); 
private static HashMap<String, Integer> Orders  = new HashMap<String, Integer>(); 

Startresのすべての可能な値を持つInit関数またはクラスのコンストラクタを使用して初期化する

もちろん
Starters.put("Spring Rolls", 350); 
Starters.put("Onion Rings", 400); 
あなたが使用することができスターター()関数(ストリップダウンサンプル)中

System.out.println("You have selected Starters"); 
    System.out.println(); 
    int i = 1; 
    String[] mystarters = Starters.keySet().toArray(new String[Starters.keySet().size()]); 
    for (String starter : mystarters) { 
     System.out.println(i++ + ". " + starter + " : Rs. " + Starters.get(starter)); 
    } 

    System.out.println("Enter your desired option"); 
    //get option 
    System.out.println("Enter quantity"); 
    //get quantity 
    // I am using s. as a prefix for starters, for Main course you could use m. or mc. or something 
    Orders.put("s." + mystarters[option - 1], quantity); 

、あなたは、このスターターはすでに順番に存在する場合、数量を取得し、既存の量に加えることができ、上書きする必要があるかどうかを尋ねます。

// example 
if(Orders.containsKey("s." + mystarters[option - 1])) 
    Orders.put(("s." + mystarters[option - 1]), Orders.get("s." + mystarters[option - 1])+quantity); 
else 
    Orders.put("s." + mystarters[option - 1], quantity); 

はビルでは、次のように使用することができます -

int sum = 0; 
    for (String orderItem : Orders.keySet()) { 
     int price = 0; 
     int quant = Orders.get(orderItem); 
     if (orderItem.startsWith("s.")) { 
      orderItem = orderItem.substring(2); 
      price = Starters.get(orderItem); 
      System.out.println(orderItem + " x " + quant + " = Rs. " + price * quant); 
     } 
     sum += price * quant; 

    } 

    System.out.println("Total Price : Rs." + sum); 
関連する問題