2016-10-15 6 views
-1

I「は、Javaでオブジェクト指向プログラミング」の名前でループが終了するとループ内に設定された値は失われますか?

をオンラインコースをやっていると私はexercise 36を把握することはできません。..

入力をユーザーに要求するプログラムを作成します。数字(整数)。プログラムは、ユーザーが数字-1を入力するまで「タイプ番号」を表示します。ユーザーが数字-1を入力すると、プログラムは「ありがとう、後でお会いしましょう」と印刷します。数-1)

import java.util.Scanner; 

public class LoopsEndingRemembering { 
    public static void main(String[] args) { 
     Scanner reader = new Scanner(System.in); 
     int n = 0; 
     int sum = 0; 
     while (n != -1) { 
      System.out.println("Type numbers"); 
      n = Integer.parseInt(reader.nextLine()); 
      sum = sum + n; // <-- The value set here is tossed once the loop of over?.. 
     } 
     System.out.println("Thank you and see you later!"); 
     System.out.println("The sum is " + sum); // <-- Does not acknowledge the free state of 'loop' and any variables that come of it   
    } 
} 

だから私は(それがNetBeansで私が取得しています)プラグイン ボタンの 'ローカルでテストを実行' をクリックしたとき:。

入力1 -1あなたがして「合計は1です」というメッセージが表示されるはずですが、<>は次のとおりです。< 0>

「0」、私の理解に..最後のprintlnのみ「合計」の初期設定を認識していることを示している理由であること?..

+1

最後の-1も引きます。 – Marvin

+0

@Marvin is right:あなたのループは-1で算術*も行います。 – Bohemian

+0

この例では、加算する数字は1つだけです(合計)。合計は 'sum' = 1です。しかし、他の人が言っているように、あなたは減算します加算を停止するためだけに機能する第2の入力(-1)。そうすることで、(エラーメッセージに記載されているように)1が必要なときに合計が0になります。 IOW、 'n 'の値をチェックするのではなく、その値を加算(または減算)します。 – ChiefTwoPencils

答えて

1

変更しますループは、として、ユーザー入力を確認しながら、ループの最後のもの。例:

public static void loopTest() 
{ 
    Scanner reader = new Scanner(System.in); 
    int n = 0; 
    int sum = 0; 
    System.out.println("Type a number then press enter... type '-1' to sum the numbers and exit"); 
    n = Integer.parseInt(reader.nextLine()); 
    while (n != -1) 
    { 
     sum = sum + n; 
     n = Integer.parseInt(reader.nextLine()); 
    } 
    System.out.println("Thank you and see you later!"); 
    System.out.println("The sum is " + sum); // <-- Does 
} 
関連する問題