2012-01-30 52 views
2

好吧,有問題的問題。我知道。基本的響應可能是將字符串轉換爲Ints

Convert.ToInt32(string); 

但自然,C#會做每一個自然過程,以確保不會發生。

這裏是我的代碼:

  while (true) 
      { 

       while (true) 
       { 
        //ask for time 
        Console.WriteLine("What is the hour?"); 
        Console.WriteLine(); 
        string s = Console.ReadLine(); 
        //convert input to int 
        YourTime.nHour = Convert.ToInt32(s); 
        //check to see if it's legal 
        if ((YourTime.nHour <= 12) || (YourTime.nHour > 0)) 
        { 
         break; 
        } 
       //etc etc code 
       } 
      } 

我想,以確保輸入是一個實際小時。當我運行這段代碼,它總是標示出if()語句爲「真」和休息,即使我輸入類似-13或99

我敢肯定有一個簡單的替代品「Convert.ToInt32( 「),但說實話,似乎我已經嘗試了一切。我決定最好按照知道手邊代碼的人的指導進行操作。

[編輯] - 錯誤的算子,不是轉換。感謝所有幫助過的人!

+0

請參閱[Int32.TryParse](http://msdn.microsoft.com/en-us/library/f02979c7.aspx) – drew010 2012-01-30 02:36:47

+0

什麼是YourTime?你創建的CLass? – Anthony 2012-01-30 02:39:33

+0

沒關係,有人已經回答了我要回復的內容 – Anthony 2012-01-30 02:43:36

回答

3

這是你的聲明,如果是無效的,而不是Convert.ToInt32

if ((YourTime.nHour <= 12) || (YourTime.nHour > 0))永遠是正確的。我認爲你的意思是做if ((YourTime.nHour <= 12) && (YourTime.nHour > 0))

+0

太好了。謝謝。 (都是這樣回答的問題_this_快嗎?) – 2012-01-30 02:40:12

6

您需要使用而不是。因此,將其更改爲

if ((YourTime.nHour <= 12) && (YourTime.nHour > 0)) 
2

你的意思是不管你輸入什麼樣的整數總是打破?

如果是這樣,因爲無論您輸入什麼樣的整數,它都會通過其中一個條件。

即如果我進入爲10000000,它仍然會大於0

,如果我進入-10000000它仍然是小於12

1

你只混合兩件事情,不應混爲一談。從字符串到int應該沒有納入任何業務邏輯 轉換器,也就是模型有責任知道這個領域實際上是時間,而不是由於

所以要分開,你可以使用很多事情,例如數據註解的付款金額,看看下面的代碼

public class MyTime 
{ 

[Require] 
[Range(0, 12, ErrorMessage = "Value for {0} must be between {1} and {2}.")] 
public int Hours { get; set; } 

[Require] 
[Range(0, 59, ErrorMessage = "Value for {0} must be between {1} and {2}.")] 
public int Minutes { get; set; } 

} 

這樣你的模型定義,可以對規則進行驗證它所知道的,你可以得到有意識的錯誤消息

PS這個link可以告訴你如何創建自定義驗證程序,如果您正在使用d ata註釋外部asp.net mvc

+0

還要檢查這個環節http://stackoverflow.com/questions/3699038/entity-framework-validation-server-clientside-jquery-with-data-annotation – vittore 2012-01-30 02:51:25

+0

微調..分鐘從0到59 ...60實際上是在下一小時的分鐘0 :) – DRapp 2012-01-30 03:06:06

+0

@DRAP:哈哈,yeap,你是對的 – vittore 2012-01-30 04:27:30