[英]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.