簡體   English   中英

使用雙精度小數時輸入字符串格式不正確

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM