使用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,它就能工作…为什么?

使用Double表示小数时,输入的字符串格式不正确

为什么?

因为IP地址不是double甚至都不是一个数字。这是一种数字标签。仅仅包含一个点和一些数字并不能使它成为一个有效的双精度(或任何数值)。

如果您喜欢,可以使用IPAddress.ParseIPAddress.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");  
     }