2017-06-26 8 views
1

私はJavaで作業しています。ユーザが指定したプロジェクトがある限り、私のループを実行します。現時点では、コードは1回の繰り返しで実行され、1つのループの結果を読み込みますが、それ以上は継続しません。複数のプロジェクトのJavaループ

ユーザーが3つのプロジェクトがあるとすれば、ループを3回実行して各プロジェクトの合計を教えてください。今のところ、それは私がプロジェクトの数を指定するかどうか私に1つのプロジェクトの合計を告げる1または5

double projectBoardFootage = 1.0; 
    double projectBoardFootageTotal = 0.0; 
    int i = 0; 

    System.out.println("How many projects do you want to estimate?"); 
    int numberOfProjects = scan.nextInt(); 


    for(i = 0; i < numberOfProjects; ++i) { 
     while (projectBoardFootage > 0) { 
      System.out.println("Enter your board footage for Project #" + (i + 1) + " (0 to exit)"); 
      projectBoardFootage = scan.nextDouble(); 
      projectBoardFootageTotal += projectBoardFootage; 
     } 
     System.out.println("The raw board footage for Project #" + (i + 1) + " is: " + projectBoardFootageTotal); 
    } 
+1

ループに入るとき、あなたのコードは 'projectBoardFootage'の内容を表示しません。 [MCVE]と[ask]を見てください – pvg

+0

私はあなたのプロジェクトの数の定義によって混乱しています...あなたは何を意味していますか?私は1つのプロジェクトの合計を教えてくれますか? "? –

+0

だから私は、プログラムを実行し、 "どのくらいのプロジェクトを見積もりたいですか?"というプロンプトが表示されたら、正の整数を入力することができ、ループは入力した時間ではなく、1回だけ実行されます。 –

答えて

0

おそらく、以前の反復回数をクリアするために合計ボードフッテージを再初期化したいですか?

for(i = 0; i < numberOfProjects; ++i) { 
    projectBoardFootageTotal = 0.0; 
    while (projectBoardFootage > 0) { 
     System.out.println("Enter your board footage for Project #" + (i + 1) + " (0 to exit)"); 
     projectBoardFootage = scan.nextDouble(); 
     projectBoardFootageTotal += projectBoardFootage; 
    } 
    System.out.println("The raw board footage for Project #" + (i + 1) + " is: " + projectBoardFootageTotal); 
} 
+0

projectBoardFootageの再初期化と合計は、私のために働いたのです。 –

0

ているあなたのコード内の問題は、ループを終了するために、変数projectBoardFootageを使用していることです。 whileループを終了し、値が決して再び変更されないことを考えてください。その時点から、すべての反復は直ちに終了します。

より良い解決策は、このような何かを行うことです。

public static void main(String[] args) 
{ 
    Scanner scan = new Scanner(System.in); 
    System.out.println("How many projects do you want to estimate?"); 
    int numberOfProjects = scan.nextInt(); 

    for(int i = 0; i < numberOfProjects; ++i) { 
     foobar(scan, i+1); 
    }   
} 

private static void foobar(Scanner scan, int projectNr) 
{   
    boolean wantsToQuit = false; 
    double projectBoardFootageTotal = 0; 
    while (!wantsToQuit) { 
     System.out.println("Enter your board footage for Project #" + projectNr + " (q to exit)"); 
     String tmp = scan.next(); 
     if(tmp.equalsIgnoreCase("q")) 
      wantsToQuit = true; 
     else 
      projectBoardFootageTotal += Double.parseDouble(tmp); 
    } 
    System.out.println("The raw board footage for Project #" + projectNr + " is: " + projectBoardFootageTotal);   
} 

このコードは、ユーザーが終了する「0」よりも賢明なキーコードを入力する保証します。

関連する問題