2015-02-07 131 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));