2017-02-03 5 views
-2

問題を終了していない間:ループは、ユーザー 999に入ると、ユーザは999に入るまで、ユーザが入力する数字を追加するために設計され、ユーザーは999を除いて、入力されたすべての数字の結果、画面に表示されます。現在、999を入力しても、intResultは未使用の未割り当てローカル変数です。以下のコードは次のとおりです。C#のループが

//Application Name: Sum 
//Date:    January 27th, 2017 
//Purpose:   Allows user to enter a number of integer values 
//     until they reach 999 and display the values 
//     entered. 


    { 
    static void Main(string[] args) 
    { 
     //Declare Variables 
     int intEnterVariable; 
     string strEnterVariable; 
     int intResult; 
     int intLimit = 999; 

     Console.WriteLine("Enter in a number"); 
     Console.WriteLine("When done, enter 999"); 
     strEnterVariable = Console.ReadLine(); 
     intEnterVariable = Convert.ToInt32(strEnterVariable); 

     //Accept user input 
     while (intEnterVariable != intLimit) 
     { 
      //Read user input 
      Console.WriteLine("Enter another number"); 
      strEnterVariable = Console.ReadLine(); 
      intEnterVariable = Convert.ToInt32(strEnterVariable); 
      intResult += intEnterVariable; 
     } 

      Console.WriteLine("Result: {0}", intResult.ToString()); 
      Console.WriteLine("Press Enter to exit"); 
      Console.ReadLine(); 
    } 
} 

}

+2

あなたは、デバッガを使用する方法を知っていますか? –

+1

なぜあなたはこれをやっていますか? 'intEnterVariable + = intEnterVariable;'ユーザが999を入力すると、それは1998になります。1998!= 999以降、ループは継続します。そのループ*は終了できません。そのためには、ユーザーは999に等しい値を入力する必要があります.999は奇数なので不可能です。 – David

+0

私はデバッグを試みましたが、それを理解することはできません。ユーザーが入力した数字をどのように追加して表示するのですか? –

答えて

3

最初の数字を入力すると、intEnterVariableに追加され、2番目の数字を入力すると、一致の制限はintEnterVaribale +前の数値になります常に999を超えているため、これはあなたの解決策です。

{ 

     //Declare Variables 
     int intEnterVariable=0; 
     string strEnterVariable; 
     int intResult; 
     int intLimit = 999; 

     //int Total Variable 
     int intTotal=0; 

     Console.WriteLine("Enter in a number"); 
     Console.WriteLine("When done, enter 999"); 
     strEnterVariable = Console.ReadLine(); 
     intEnterVariable = Convert.ToInt32(strEnterVariable); 
     intTotal = intEnterVariable; 
     //Accept user input 

     while (intEnterVariable != intLimit) 
     { 
      //Read user input 
      Console.WriteLine("Enter another number"); 
      strEnterVariable = Console.ReadLine(); 
      intEnterVariable = Convert.ToInt32(strEnterVariable); 
      intTotal = intTotal + intEnterVariable; 
     } 
     intTotal = intTotal - 999; 
     intResult = intTotal; 
     Console.WriteLine("Result: {0}", intResult.ToString()); 
     Console.WriteLine("Press Enter to exit"); 
     Console.ReadLine(); 
    } 

ハッピーコーディング! :)

+0

このコードは、ユーザーが入力した数字を追​​加することを目的としています。ユーザーが実際に999を入力すると、999以外のユーザーが入力したすべての数字の結果が表示されます。 –

+0

解決策を見つけたら、これが役立つことを願って、コードを更新しました。試してみる !それがあなたのために働く場合、答えとしてマークしてください:) –

0

ユーザが999 ...

intEnterVariable = Convert.ToInt32(strEnterVariable); 

変数intEnterVariableに入ったときに何が起こる999

に入るまで?現在は999です。次に...

intEnterVariable += intEnterVariable; 

変数intEnterVariableは今、ループが続くように、1998年に続いて...

while (intEnterVariable != intLimit) 

1998、999に等しくない等しいです。


はおそらく、あなたもまだ、すぐにループした後、あなたがこれを行うが、これ?:

intResult += intEnterVariable; 

を行うためのもの:

intResult = intEnterVariable; 

だから、あなたがそこに格納されている任意の値を壊します前。ここではかなりの論理的なエラーが発生する可能性があります。実際には、これをデバッガの使い方に慣れる機会として取るべきです。コードをステップ実行し、ロジックと変数の値を観察してコードあなたが期待しているところから行動が変わるところです。

しかし、少なくともループが無限ループである理由は、上記のとおりです。 intEnterVariable += intEnterVariable;は決して(決して整数ではありません)999になりません。

+0

私は提供されたすべての回答を理解しており、以前は理解していなかったことをお詫びします。結果がintResult + = intEnterVariableとなるように変更しました。今唯一の問題は、答えがオフであることです –

+0

@ChrisShaw: "オフ"の仕方?問題を説明してください。これはまた、デバッガの使用を開始するのに適した時間です。デバッガはあらゆる方法でプログラマの最も価値が高く有用なスキルです。 – David

+0

私はそれを理解しました!私は以前にデバッガを使用していましたが、それを使用しましたが、実際には簡単な修正であり、答えとして投稿します。 –

1

あなたが取り込んでいる現在の番号と合計数に別の変数を使用する必要があります。今すぐintEnterVariableが999に等しいかどうかをチェックしています。最初に500を入力し、2回目に500を入力すると、intEnterVariable = 1000になります。

1
static void Main(string[] args) 
{ 
    //Declare Variables 
    int intEnterVariable; 
    string strEnterVariable; 

    // 
    // You need to give initial value here 
    // 
    int intResult = 0; 
    int intLimit = 999; 
0

using System;

名前空間_01CH4SumChrisShaw { パブリッククラス合計 { 静的な無効メイン(文字列[] args){ //は変数 int型intEnterIntegerを宣言します。 string strEnterInteger; int intResult = 0; int intLimit = 999;

 Console.WriteLine("Enter multiple numbers. Calculate results by entering 999"); 
     strEnterInteger = Console.ReadLine(); 
     intEnterInteger = Convert.ToInt32(strEnterInteger); 
     intResult += intEnterInteger; 

     //Accept user input 
     while (intEnterInteger != intLimit) 
     { 
      //Read user input 
      Console.WriteLine("Enter another number"); 
      strEnterInteger = Console.ReadLine(); 
      intEnterInteger = Convert.ToInt32(strEnterInteger); 
      intResult += intEnterInteger; 
     } 
     Console.WriteLine(); 
      Console.WriteLine("Result: {0}", intResult - intLimit); 
      Console.WriteLine("Press Enter to exit"); 
      Console.ReadLine(); 
    } 
} 

}