2013-10-07 61 views
0

我正在做一個作業問題,我需要編寫一個輸入五個數字的應用程序,每個數字都在10到100之間(包括10和100)。當每個數字被讀取時,只有當它不是已經讀取的數字的副本時才顯示它。提供最糟糕的情況,其中所有五個數字都不相同。爲了解決這個問題,儘可能使用最小的數組,並在用戶輸入每個新值後顯示一組完整的唯一值。使用數組顯示一組唯一的值

我到目前爲止工作正常。只有當程序運行時,如果所有五個數字都是唯一的,我會一直收到未處理的錯誤。它告訴我索引超出了數組的範圍。只有我不確定它爲什麼這樣做,而我在for循環中看不到任何錯誤。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Ten_Seven_Thirteen 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     const int SIZE = 5; 
     int[] nums = new int[SIZE]; 
     int a; 
     int b; 
     int c = 0; //c is the amount of numbers currently entered 
     int number; 
     Console.WriteLine("Input five numbers between 10 and 100 (inclusive): \n"); 

     for (int count = 0; count < SIZE; count++) 
     { 

      number = Convert.ToInt32(Console.ReadLine()); 
      if (number >= 10 && number <= 100) //Verify whether or not the number meets the criteria 
      { 
       for (a = 0; a < c; a++) 
       { 

        // The following if condition checks for duplicate entrees. 
        if (number == nums[a]) 
        { 
         Console.WriteLine("Duplicate number.\n"); 
         break; //Breaking the loop prevents the duplicate number from entering the array 
        } 

       } // end for 

       // if number is not a duplicate, enter it in array 
       if (number != nums[a]) 
       { 
        nums[c++] = number; 
       } // end if - not duplicate 

       Console.WriteLine("The non-duplicate values are:\n"); 

       //display array of unique numbers 
       for (b = 0; nums[b] != 0 && b < SIZE; b++) 
       { 
        Console.WriteLine(nums[b]); 

       } // end for loop and display array 
      } // end if - validate and test 
      else 
       Console.WriteLine("invalid number."); 
      Console.WriteLine("\n"); 

     } // end for - get 5 numbers 



     } 
    } 
}// end Ten_Seven_Thirteen 

回答

4

這是因爲這個代碼..

for (b = 0; nums[b] != 0 && b < SIZE; b++) 
{ 
    Console.WriteLine(nums[b]); 
} 

您不能檢查NUMS [B]有。你需要找出一個更好的方法來切斷它(我會把它留給你,因爲它是功課,或者你可以在評論中提問)。 b將進入SIZE,然後它會檢查數量[SIZE],最後一個索引的數量是SIZE - 1,因此你會得到一個索引超出範圍例外。

此外,此代碼將無法正常工作,因爲它只提示你5次,不管它們是否獨一無二。嘗試不同的類型的循環。

另外...這是稍微偏離主題,但因爲你正在學習:命名你的變量有意義。 a,b,c使它變得神祕而難以閱讀。睡覺後你不會知道你在做什麼。更好的命名意味着你需要更少的評論,因爲代碼證明自己。專業代碼中沒有太多評論,儘管高中教師會告訴你。