2015-02-07 176 views
3

首先,我是C#的初學者,我剛剛開始使用它,因爲這正是我的大學課程所要求的。檢查輸入的數字是否具有整數值

我的問題是分配問題,它說:

h)至測試,如果輸入的號碼有一個整數值。提示:該號碼必須是Double類型。例如,如果數字是2.5,但沒有整數值但是2。您需要使用Convert.ToInt32(TheNumber)將Double轉換爲Int,然後比較兩者。

double a, b, result; 
      Console.WriteLine("Input a number"); 
      a = Convert.ToDouble(Console.ReadLine()); 
      b = Convert.ToInt32(a); 

這就是我現在所擁有的,我不知道如何比較這兩個來測試哪一個是整數。我非常肯定你必須使用if語句,但是如何告訴C#來測試這兩個數字中哪一個是整數,哪一個不是!

任何幫助,高度讚賞:)

+0

你嘗試過'一== B' - https://dotnetfiddle.net/ 6A3GwH? – Rhumborl 2015-02-07 12:30:57

+0

這就是說,如果a等於b,但它們永遠不會相等,因爲一個數字是小數,另一個數字是整數。我需要類似於如果我輸入一個= 2.5它會說2.5不是一個整數,但然後b =將其轉換爲整數和打印,2是一個整數 – 2015-02-07 12:35:25

+0

'double a,b' - 其中是整數? '2.00000'與小提琴所顯示的一樣(並且大家都知道) – Rhumborl 2015-02-07 12:37:24

回答

5

更新:
我會做這樣的:

double d; 
int i; 
Console.WriteLine("Input a number"); 
d = Convert.ToDouble(Console.ReadLine()); 
i = Convert.ToInt32(d); 
if(i == d) Console.WriteLine("It is an integral value"); 

這意味着:如果你將一個double轉換爲一個整數,它將在小數點後失去所有數字。如果這個整數與double有相同的值,那麼double在小數點後面沒有數字,所以它有一個整數值。

+0

這是給我一個錯誤消息,行d = Convert.ToDouble(Console.ReadLine()),我不知道爲什麼真的 – 2015-02-07 12:44:40

+0

什麼是錯誤?它看起來像分配讓你假設用戶輸入一個實際的數字,比如'2',而不是像'gfjhsgfd'這樣的無效數字。 – Rhumborl 2015-02-07 12:52:39

+0

當我輸入2.5例如我得到一個類型'System.FormatException'的未處理的異常發生在mscorlib.dll – 2015-02-07 12:56:51

4

您可以使用TryParse方法,它返回布爾

 double mydouble; 
     int myInt; 
     string value = Console.ReadLine(); 
     if (double.TryParse(value, out mydouble)) 
     { 
      //This is double value, you can perform your operations here 
     } 
     if (int.TryParse(value, out myInt)) 
     { 
      //This is Int value, you can perform your operation here 
     } 
+1

如果您提供示例代碼,OP會更好。 – 2015-02-07 12:28:34

+0

我在寫信,什麼是OP? – 2015-02-07 12:29:57

+1

OP =原創海報。 – 2015-02-07 12:32:12

0

應該是這樣的:

double d; 
int i;  
Console.WriteLine("Input a number"); 
d = Convert.ToDouble(Console.ReadLine()); 
i = Convert.ToInt32(d); 
if(i == d) Console.WriteLine("It is an integral value"); 
0

我認爲你可以使用TryParse與do while循環

int number; 
string value; 
do 
{ 
    Console.Write("Enter a number : "); 
    value =Console.ReadLine(); 

    if (!Int32.TryParse(value, out number)) 
     { 
     Console.WriteLine("Wrong Input!!!!"); 
     } 

}while (!Int32.TryParse(value, out number));