[英]Input string not in correct format when using Double for Decimals
using System;
namespace FirstConsoleProject
{
class MainClass
{
public static void Main (string[] args)
{
Console.Write ("Please Put IP: ");
double userip = Convert.ToDouble (Console.ReadLine()); //Error Here <--- Input string not in correct format
Console.Write ("The User's IP is: " + userip);
Console.ReadKey ();
}
}
}
基本上它曾经是
int userip = Convert.ToInt32 (Console.ReadLine());
但是我知道IP是十进制的,所以我尝试使用Double,所以我把
double userip = Convert.ToDouble (Console.ReadLine());
但是现在的问题是,当我使用“ Double”运行代码并输入类似1.1.1.1的内容时,它说“输入字符串的格式不正确”。 但是,当我输入不带小数的整数(如23或2)时,它可以工作...为什么?
为什么?
因为IP地址不是double
。 它甚至不是数字。 这是一种数字标签。 仅包含带有一些数字的点并不能使其成为有效的双精度(或任何数字值)。
如果愿意,可以使用IPAddress.Parse
或IPAddress.TryParse
对其进行解析。
IP地址不是十进制格式,请使用IPAddress.Parse或TryParse
IPAddress userIp = IPAddress.Parse(Console.ReadLine);
https://msdn.microsoft.com/en-us/library/1b2h863h(v=vs.110).aspx
尝试使用正则表达式匹配IP地址:
string userIP = Console.ReadLine();
Match match = Regex.Match(userIP, @"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}");
if (match.Success)
{
Console.WriteLine("Valid IP");
}
else
{
Console.WriteLine("Invalid");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.