使用Double表示小数时,输入的字符串格式不正确
本文关键字:字符串 格式 不正确 输入 Double 表示 小数 使用 | 更新日期: 2023-09-27 18:06:02
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。解析或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");
}