繁体   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