2013-07-15 106 views
2

我想做一個程序,計算用戶給出的數字中的某些特定數據。 在這個例子中,我的程序計算可以被2整除的範圍(10,103)中的數字的數量,以及用戶給出的數字中可以被3整除的範圍(15,50)中的數字的數量。 在這個階段,我的程序給出了結果,當給出10個數字時(正如我在循環中指定的那樣)。如何讓我的程序停止閱讀數字,並在用戶輸入空行時給出結果,無論他是否輸入過5或100個數字?如何在沒有輸入時讓程序停止閱讀用戶輸入?

這裏是我的代碼,因爲它看起來現在:

using System; 

namespace Program1 
{ 
    class MainClass 
    { 
     public static void Main (string[] args) 
     { 
      int input10_103_div_2 = 0; 
      int input15_50_div_3 = 0; 

      for (int i = 0; i < 10; i++) 
      { 
       string input = Console.ReadLine(); 
       double xinput = double.Parse (input); 

       if (xinput > 10 && xinput <= 103 && (xinput % 2) == 0) 
       { 
        input10_103_div_2++; 
       } 
       if (xinput > 15 && xinput < 50 && (xinput % 3) == 0) 
       { 
        input15_50_div_3++; 
       } 
      } 
      Console.WriteLine ("Amount of numbers in range (10,103) divisible by 2: " + input10_103_div_2); 
      Console.WriteLine ("Amount of numbers in range (15,50) divisible by 3: " + input15_50_div_3); 
     } 
    } 
} 

回答

0

如果要重構循環,你可以使用一個do while循環:

string input; 
do{ 
    input = Console.ReadLine(); 
    //stuff 
} while(!string.IsNullOrEmpty(input)); 

如果你只是希望能夠早日打破:

string input = Console.ReadLine(); 
if(string.IsNullOrEmpty(str)) 
    break; 
double xinput = double.Parse (input); 
+1

在這種情況下,他會做//針對空字符串的東西。他需要另一個如果驗證 – Jonesopolis

+0

@Jonesy右,這很好。 「儘管」最好地傳達了他的邏輯,而我正在爲他的要求「無論他是否輸入5或100」而拍攝。 –

+0

@Jonesy在我看來,這並不比使用兩個'Console.ReadLine'的答案更糟糕。 –

5

,而不是爲,做到:

string input = Console.ReadLine(); 
while(input != String.Empty) 
{ 
    //do things 
    input = Console.ReadLine(); 
} 

,如果你想允許任何數量的輸入。或

if(input == "") 
    break; 

,如果你想在for循環

2

將您的循環更改爲永久性並在字符串爲e時跳出循環mpty:

for (;;) 
{ 
    string input = Console.ReadLine(); 
    if (String.IsNullOrEmpty(input)) 
    { 
     break; 
    } 

    // rest of code inside loop goes here 
} 
+1

現在工作,謝謝;) – ltantonov