0

ループするたびにこれが正しく加算されない理由がわかりません。-9999 を入力したときに while ループが合計を出力しないという問題もあります。

import java.util.*;
public class list 
{
   public static void main(String args []) 
   {
      Scanner sc = new Scanner(System.in);
      int Number, Sum = 0;
      System.out.println("Enter the list of whole numbers, terminate by -9999> ");
      Number = sc.nextInt();
      Sum += Number;
      while (Number != -9999) 
      {
         if (Number > 1 && Number < 100)
         {
            Sum += Number;
            Number = sc.nextInt();
         } 
         else
           System.out.println("Please enter a number between 1 and 100");
         Number = sc.nextInt();
      }
      System.out.println("Sum is " + Sum);
   }
}
4

2 に答える 2

5

ループ内で 2 回、数値を要求している可能性があります。ifブロック内に 1 回、ブロックに1 回else。括弧がないと、最初のステートメントのみがブロックになります。それ以外の

else
    System.out.println("Please enter a number between 1 and 100");
  Number = sc.nextInt();

試す

else
{
    System.out.println("Please enter a number between 1 and 100");
    Number = sc.nextInt();
}

また、最初の番号が 2 回追加されます。whileループの前から最初の追加を削除します。

さらに、それは合法であり、実際の要件である可能性がありますが、この行

if (Number > 1 && Number < 100)

1またはを受け付けません1001要件に と の両方を受け入れることが含まれる可能性があります。100その場合、条件は である必要がありますNumber >= 1 && Number <= 100

ちなみに、慣習的に Java 変数は小文字で始まり、クラスは大文字で始まるため、変数Numberとはそれぞれとに名前をSum変更する必要があります。numbersum

于 2013-12-09T22:33:35.223 に答える
0

1 修正済み 条件付きループをより有効に使用することを計画している場合do while()

2 内部に役に立たない sc.nextInt() があり、if (Number >= 1 && Number <= 100)すべての計算が混同されていました

Number >= 1 && Number <= 100アプリケーションで 1 と 100 を受け入れたくない場合を除き、1 と 100 の間の 3 が必要だと思います。

Scanner sc = new Scanner(System.in);
            int Number, Sum = 0;
            System.out.println("Enter the list of whole numbers, terminate by -9999> ");
            Number = sc.nextInt();

           do {
              if (Number >= 1 && Number <= 100)
              {
               Sum += Number;
              } 
             else
                System.out.println("Please enter a number between 1 and 100");

              Number = sc.nextInt();
            } while (Number != -9999);
            System.out.println("Sum is " + Sum);
          }

幸運を

于 2013-12-09T22:40:27.860 に答える