2016-11-13 5 views
0

私は、購入したアイテムの数をユーザーに尋ねるプログラム(Eclipseを使用)を書く必要があり、do-whileループでコードを作成する必要があるAP Comp Sciクラスのこの課題に取り組んでいます。ループを通過するたびに、別のアイテムに関連する必要があります。これらの各項目について、ユーザーはコストを入力する必要があります。次に、9%の消費税の後に、すべての品目の合計原価と合計を印刷し、結果を印刷する必要があります。do-whileループをコーディングしますか?

私はそれをやろうとしましたが、正しく印刷するための合計を得ることができず、for-loopを取り出しても機能しません。それを修正する方法のいくつかの点を教えていただけますか?

public static void main(String[] args) { 
    Scanner kbReader = new Scanner(System.in); 

    System.out.println("You went shopping on Cyber Monday."); 

    do { 
     System.out.println("How many items did you purchase?"); 
     int num = kbReader.nextInt(); 
     for(int x = 0; x < num;) { 
      System.out.println("What did you purchase?"); 
      String item = kbReader.next(); 
      System.out.println("How much did it cost?"); 
      double cost = kbReader.nextDouble(); 
      break; 
     } 
     break; 
    } while(true); 

    double total = cost; 
    double totalTax = total + (total * 0.09); 
    System.out.println("Total: $" + total); 
    System.out.println("Total after tax: $" + totalTax); 
} 
+1

ようこそスタックオーバーフロー!デバッガの使い方を学ぶ必要があるようです。いくつかの[補完的なデバッグ手法](https:// ericlippert)にご協力ください。com/2014/03/05/how-to-debug-small-programs /)を参照してください。その後も問題が残っている場合は、もう少し詳しくお聞かせください。 –

答えて

0

あなたの実装

あなたのコード内の3個のエラーがあります

  1. x++あなたはdo-whileループouside costを宣言する必要があり、forループ

  2. が不足している中であなたは合計する必要があります()ループでforループ内の単一のアイテムのコスト。

  3. forループを中断しないでください(xが自動的に破損するターゲット番号に達したとき)。またdo-while後にスキャナを閉じることを忘れないでください

kbReader.close();

このコードをすべき作品:

public static void main(String[] args) { 
     Scanner kbReader = new Scanner(System.in); 

     System.out.println("You went shopping on Cyber Monday."); 
     double cost = 0; 
     do 
     { 
     System.out.println("How many items did you purchase?"); 
     int num = kbReader.nextInt(); 
     for(int x = 0; x < num;x++) 
     { 
      System.out.println("What did you purchase?"); 
      String item = kbReader.next(); 
      System.out.println("How much did it cost?"); 
      cost += kbReader.nextDouble(); 
     } 
     break; 
     }while(true); 
     kbReader.close(); 
     double total = cost; 
     double totalTax = total + (total * 0.09); 
     System.out.println("Total: $" + total); 
     System.out.println("Total after tax: $" + totalTax); 
    } 

正しいDO-しばらく実装

私は考え別の実装を提案したいのですが、それはdo-whileループはforループも使用しないでください。 これはコードです:

Scanner kbReader = new Scanner(System.in); 
System.out.println("You went shopping on Cyber Monday."); 
double cost = 0; 
int x = 0; 
System.out.println("How many items did you purchase?"); 
int num = kbReader.nextInt(); 
do 
{ 
    System.out.println("What did you purchase?"); 
    String item = kbReader.next(); 
    System.out.println("How much did it cost?"); 
    cost += kbReader.nextDouble(); 
    x++; 
} while(x<num); 
kbReader.close(); 
double total = cost; 
double totalTax = total + (total * 0.09); 
System.out.println("Total: $" + total); 
System.out.println("Total after tax: $" + totalTax); 
0

あなたのコードを持ついくつかの問題があります。最初のものは、1回だけ実行された後に2つのループから脱落するということです。

while (true)は一般的にはお勧めできません。

int count = 0; 
do { 
    <code body> 
    count++; 
} while (count < num); 

:私はあなたがdo-while文、およびwhileループ本体内部のいずれかで0インクリメントするカウンタをカウンタを設定し、のようなwhile文でそれをテストする上でどのように多くの項目を尋ねることを示唆していますさらに、whileループスコープの内側にある変数全体にアクセスしようとしています。コンパイルすることはできません。 whileループの上でそれを初期化し、ループの内側でそれを増やします(例:total += cost;)。あなたはforループを完全に取り除くことができます。

試してみてください!

関連する問題