2015-12-12 56 views
0
static int min(int[] arr, int a) 
    { 
     int min = arr[0]; 
     for (int i = 1; i < a; i++) 
      if (arr[i] < min) 
       min = arr[i]; 
     return min; 
    } 

    static void Main(string[] args) 
    { 
     int[] arr = new int[10]; 
     int i; 
     Console.WriteLine("Vnesi števila: "); 
     for (i = 0; i < 10; i++) 
     { 
      int stevilo = int.Parse(Console.ReadLine()); 
      if (stevilo == 0) 
       break; 
      arr[i] = stevilo; 
     } 

     if (i < 2) 
     { 
      Console.WriteLine("Napaka - premalo števil!"); 
      Console.ReadKey(); 
      return; 
     } 

     int min1 = min(arr, i); 

     int? min2 = null; 
     for (int j = 0; j < i; j++) 
     { 
      int stevilo = arr[j]; 
      if(stevilo != min1 && (min2 == null || stevilo < min2)) 
       min2 = stevilo; 
     } 

     if(min2 == null) 
      Console.WriteLine("Napaka - vsa števila enaka!"); 
     else 
      Console.WriteLine("Drugo najmanjše: " + min2.ToString()); 

     Console.ReadKey(); 
    } 
} 

} 所以這段代碼讀取2到10個數字並寫出其中的第二個最小的數字。您可以用鍵0取消輸入數字。在第二小數字不能寫出的情況下(全部輸入例如5 5 5 5),則不寫出數字)。使用什麼而不是null

但我發現我們不能使用空值,那麼我可以用什麼替換它?謝謝!

+2

?什麼阻止了? – David

+0

學校不允許它 –

+0

你想用null完成什麼? – Filip

回答

0

初始化MIN2變量爲0,然後對其進行測試,當你需要搜索的最小值和不使用空整數

int min2 = 0; 
    for (int j = 0; j < i; j++) 
    { 
     int stevilo = arr[j]; 
     if(stevilo != 0 && stevilo != min1 && stevilo < min2)) 
      min2 = stevilo; 
    } 

    if(min2 == 0) 
     Console.WriteLine("Napaka - vsa števila enaka!"); 
    else 
     Console.WriteLine("Drugo najmanjše: " + min2.ToString()); 

你也應該改變輸入迴路,以避免與用戶輸入問題

int stevilo; 
string userInput = Console.ReadLine(); 
if(!Int32.TryParse(userInput, out stevilo) || stevilo == 0) 
    break; 
arr[i] = stevilo; 

使用Int32.TryParse,如果避免了異常的用戶類型的東西,不能轉換爲一個整數

+0

不能使用任何 –

+0

我可以只使用「0」嗎? –

+0

是的,元素該數組會自動初始化爲零,因此當您需要停止,更新時,它也可以用作路標 – Steve

0

好了,一個陌生的約束噸,但一旦你擁有了它,那麼就用bool標誌或事實,爲什麼你不能用'null`的min2必須不同於min1這樣

// ... 

int min1 = min(arr, i); 

int min2 = min1; 
for (int j = 0; j < i; j++) 
{ 
    int stevilo = arr[j]; 
    if(stevilo != min1 && (min2 == min1 || stevilo < min2)) 
     min2 = stevilo; 
} 

if(min2 != min1) 
    Console.WriteLine("Napaka - vsa števila enaka!"); 
else 
    Console.WriteLine("Drugo najmanjše: " + min2.ToString()); 
相關問題