2017-02-03 325 views
-2

問題:循環被設計成加起來用戶輸入直到用戶輸入999。一旦用戶進入 999號碼,用戶輸入,除了999的所有數字的結果,顯示在屏幕上。現在,即使輸入999,它也會顯示intResult是一個未使用的未分配本地變量。代碼如下:C#while循環不結束

//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,然後當你進入第二個數字的,而符合限額變爲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

當用戶輸入999,會發生什麼......

intEnterVariable = Convert.ToInt32(strEnterVariable); 

變量intEnterVariable?現在等於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,第二次輸入500,那麼intEnterVariable = 1000.它永遠不會等於999,因此循環將永遠消失。

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 { 公共類薩姆 { 靜態無效的主要(字符串[]參數) { //聲明變量 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(); 
    } 
} 

}