我想从C#中的控制台应用程序中读取一个double值和一个整数值。 `
int ch = Console.Read();
Console.WriteLine("Enter a random integer");
int x = int.Parse(Console.ReadLine());
switch (ch)
{
case 1:
TempServiceRef.Service1Client s1 = new ConsoleTempApplication.TempServiceRef.Service1Client();
Console.WriteLine("Enter temperature");
string n = Console.ReadLine();
int param = int.Parse(n);
double result = s1.c2f(param);
Console.WriteLine(result);
Console.ReadLine();
break;
case 2:
TempServiceRef.Service1Client s2 = new ConsoleTempApplication.TempServiceRef.Service1Client();
Console.WriteLine("Enter temperature");
int param1 = int.Parse(Console.ReadLine());
double result1 = s2.f2c(param1);
Console.WriteLine(result1);
Console.ReadLine();
break;
default:
Environment.Exit(0);
break;
}
`
一旦我尝试输入ch的值,控制台应用程序就会关闭。有时它在给出温度值后会关闭。我尝试使用tryParse和Convert.toInt。但我没有得到任何结果。谁可以帮我这个?进一步......我只是希望用户只输入整数值(作为假设)。在这种情况下,tryparse用法不是强制性的吗?
答案 0 :(得分:0)
问题1:您正在使用Console.Read()
方法从控制台读取单个字符。但是,您需要按Enter key
返回输入的值/字符当您使用Console.Read()
方法时,按Enter#{1}}方法将获得值空字符串,int.Parse()将抛出空字符串上的异常。
解决方案1:您需要在Console.ReadLine()
方法之后添加Console.ReadLine()
来读取第一个字符。然后你就可以继续了。
试试这个:
Console.Read()
问题2:您可以尝试将从控制台输入的字符直接与数字进行比较,这些数字不起作用,因为当您从控制台读取字符时,它将存储其ASCII值而非直接整数。例如如果从控制台输入 int ch =Console.Read();
Console.ReadLine(); //add this statement
Console.WriteLine("Enter a random integer");
int x = int.Parse(Console.ReadLine());
,它将以1
存储在整数变量49
中(ACII代码1为49),因此当您与1进行比较时,它不匹配。
解决方案2:,因此您需要匹配其字符值。所以将值括在单引号内以匹配在控制台中输入的确切值。
试试这个:将1和2括在单引号
中ch
完整代码:
switch (ch)
{
case '1':
---
break;
case '2':
-----
break;
}