C# 无法从';双倍';至';System.ReadOnlySpan<;char>';尝试使用'TryParse'时出错`
我目前正在学习C#,我遇到了麻烦。我得到C# 无法从';双倍';至';System.ReadOnlySpan<;char>';尝试使用'TryParse'时出错`,c#,C#,我目前正在学习C#,我遇到了麻烦。我得到无法从'double'转换为'System.ReadOnlySpan'错误,当我尝试使用时!double.TryParse staticdoubleuserdouble,correctDouble; 静态方法(){ Console.Write(一些双字符串); 而(!double.TryParse(userDouble,out )){ 试一试{ userDouble=Double.Parse(Console.ReadLine()); } 抓住{ Conso
无法从'double'转换为'System.ReadOnlySpan'
错误,当我尝试使用时!double.TryParse
staticdoubleuserdouble,correctDouble;
静态方法(){
Console.Write(一些双字符串);
而(!double.TryParse(userDouble,out )){
试一试{
userDouble=Double.Parse(Console.ReadLine());
}
抓住{
Console.WriteLine($“{Convert.ToString(userDouble)}是无效的输入\n\n”);
}
}
//检查userDouble是否正确。
if(数学四舍五入(correctDouble,2)==userDouble){
Console.WriteLine(“您是正确的!\n”);
}
否则{
控制台。WriteLine(“你错了。”);
}
}
该怎么办:检查userDouble
是否为有效的双精度字符,而不是字母/单词
我还尝试:
while(!double.TryParse(Console.ReadLine(),out userDouble)){
Console.WriteLine($“{Convert.ToString(userDouble)}是无效的输入\n\n”);
}
但是这给了我方法'TryParse'不重载1个参数
任何帮助都将不胜感激 您需要首先在字符串变量中获取控制台值,然后使用
double.TryParse(…)
检查它。试试下面的方法
string s = Console.ReadLine();
while(!double.TryParse(s, out userDouble)) {
Console.WriteLine($"{s} is an invalid input\n\n");
s = Console.ReadLine();
}
您的以下尝试必须正常工作。但您将面临的唯一问题是,当
Console.ReadLine()
中的值不是double
时,它将写入0是无效的输入,因为double.TryParse
将设置userDouble=0
while(!double.TryParse(Console.ReadLine(), out userDouble)) {
Console.WriteLine($"{Convert.ToString(userDouble)} is an invalid input\n\n");
}
如何声明变量userDouble
?如果将userDouble
声明为double
,userDouble
声明为static double
,则第二次尝试应该有效。我的第二次尝试也给了我一个错误,方法“TryParse”取1个参数时没有重载。我被困在这里有一段时间了。为将来的读者更新了我的帖子。非常感谢。您的代码:while(!double.TryParse(userDouble,out )){
。您的注释:“userDouble声明为静态double”-那么您希望TryParse
如何处理userDouble
?您的第二次尝试是正确的,没有给您那个错误消息。@John感谢您的澄清!我现在明白了。非常感谢您的回答。再次感谢您!感谢您的进一步澄清!我有一个问题。为什么要使用string s=Console.ReadLine();
和while(!double.TryParse(s,out userDouble)){…}
生成一个无限循环,显示Conole.WriteLine(“无效输入”)
。但是while(!double.TryParse(Console.ReadLine(),out userDouble)){…
不生成无限循环,但不显示Console.WriteLine(“无效输入”)
当用户输入字符/字符串时?它将在用户输入字符/字符串前后第二次显示。我现在得到了它,我忘记在while循环中添加s=Console.ReadLine();
。再次感谢您!添加s=Console.ReadLine()
在循环结束时执行。因此,对于下一次迭代,将在条件中检查最新的值。