确定用户提要是整数还是小数的程序



我正在做一项学校作业,任务是编写一个要求用户输入数字的程序。然后,它将输入更改为一个数字,并确定该数字是整数还是小数。如果不可能,它会告诉用户。程序不能有用户输入可能导致的错误。

我的问题是程序确定提要是整数还是小数的部分,如果我输入一个整数,它说这个数字是整数和小数,如果我输入一个小数,它以错误结束。如果输入错误,程序永远不会到达catch (Exception)

public static void ITellYouYourNumbers(float number)
{
try
{
float d = number;
int isInt = (int)d;
Console.WriteLine("The number is a integer");
float isFloat = (float)d;
Console.WriteLine("The number is a decimal");
}
catch (Exception)
{
Console.WriteLine("Your input cannot be changed into a number. Try again.");
Console.ReadLine();
throw;
}
}
static void Main(string[] args)
{
Console.WriteLine("Write a number");
float num = float.Parse(Console.ReadLine());
ITellYouYourNumbers(num);
}

我试过用不同的方法来测定d,例如:

decimal d = number
Console.WriteLine((d % 1) == 0);
d = number
Console.WriteLine((d % 1) == 0);

(d % 1) < epsilon

但是我试过的都没用。如果输入是整数,它显示为整数和小数,如果我输入一个小数,它说在float num = float.Parse(Console.ReadLine());中发生了错误,但它不显示为程序本身的错误。

首先,如果您放入的字符串不能被解析为浮点数(也要注意高低限制,有最小值和最大值),float. parse()将失败并产生异常,并且异常不会被catch停止,因为它不是在try-catch块中生成的。

第二,float总是可以被强制转换为int类型。

第三,你将d转换为浮点数,而d已经是浮点数了,所以为什么它不能工作呢?

第四,你把你的float参数(称为"number")放在函数内部的另一个float中(称为"d")。虽然从技术上讲没有错,但当你不打算修改一个值的任何一个实例时,复制一个值让我很困扰。

如果您可以修改main,请直接调用ITellYouYourNumbers函数并将字符串放入其中而不尝试解析它。如果我正确理解你的练习说明,你所要做的就是检查
1/即使在两端删除所有空白字符后,字符串也不是空的。
2/修剪后,只包含数字,最多一个'。'或','字符。
3/如果包含'。'或',',它是一个小数。否则为整数

如果您实际上应该将输入转换为数字,您可以通过利用int x = (int)y将y的整数部分并将其放入x中来检查它是否表示整数。
之后,您只需检查x==y是否。

最新更新