当当当当 int.Parse()异常~

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string inputNum;
            int num;
            Console.WriteLine("Please enter your input number");
            inputNum = Console.ReadLine();
            num = int.Parse(inputNum);

            Console.WriteLine("Your input is" + inputNum);
            Console.WriteLine("After num" + num);

        }
    }
}

当输入字符非数字时,会出现下列情况

我们应该用什么方法来解决它呢?

下列几个方法是可以使用的

1.使用try,catch语句,将源代码改成下列代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string inputNum;
            int num;
            Console.WriteLine("Please enter your input number");
            inputNum = Console.ReadLine();

            try
            {
                num = int.Parse(inputNum);
            }
            catch (Exception)
            {
                Console.WriteLine("Your input is wrong!!!");
            }

        }
    }
}

这样通过使用try, catch我们可以接到抛出的异常,结果如图

2. 使用int.TryParse (String s,out int num.)与 int.Parse(string s)又较为类似,但它不会产生异常,最后一个参数为输出值,如果转换失败,输出值为 0,如果转换成功,输出值为转换后的int值。

代码行如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string inputNum;
            int num;

            Console.WriteLine("Please enter your input number");
            inputNum = Console.ReadLine();

            Console.WriteLine(int.TryParse(inputNum, out num));
            Console.WriteLine(num);

        }
    }
}

测试结果如下

附:另外两种string转换成int的方法

1. Convert.ToInt32()是一种类容转换;但它不限于将字符串转为int类型,还可以是其它类型的参数;Convert.ToInt32 与 int.Parse 较为类似,实际上 Convert.ToInt32 内部调用了 int.Parse。

2. (int) 属 cast 转换,当我们把int类型扩展到long,float,double,decimal类型,可以使用隐式转换,但是当我们从long类型到int类型就需 要使用显式转换,否则会产生编译错误。但我们只能将其它数字类型转换成 int 类型,它不能转换字符串,比如下例就会失败:   string v = "1";   int n = (int)v;

THX 4 ur reading~

^ ^

时间: 2024-11-08 21:06:06

当当当当 int.Parse()异常~的相关文章

int.Parse 异常分析报告

在本次博客中,主要围绕int.Parse的异常进行说明. 在c#中使用int.Parse将其他类型转换成int型时,运行程序是经常抛出以下三种异常类型: 1,System.ArgumentNullException  转换对象为null 2,System.FormatException 格式不正确 3,System.OverflowException 转换对象溢出 对于System.ArgumentNullException这种情况而言,int.Parse在判断转换对象为null时,其不能转换出

int.Parse()及其异常判断

1.int.Parse()是一种类容转换,表示数字内容的字符串转为int类型. 如果字符串为空,则抛出ArgumentNullException异常: 如果字符串内容不是数字,则抛出FormatException异常: 如果字符串内容所表示数字超出int类型可表示的范围,则抛出OverflowException异常: 2.除了int.Parse(),C#中海油其他函数能将类型转换为int型.如Convert.ToInt32().int.TryParse().(int)等函数. int.TryPa

int Parse方法引发的异常

今天,我们来介绍一下Parse方法引发的异常. 一.Parse方法(String): 首先,我们先来介绍一下这个Parse方法的主要作用,即将数字的字符串表示形式转换为它的等效 32 位有符号整数.在C++中,它的具体语法如下: public: static int Parse( String^ s ) 其中,参数是s,类型是String,包含要转换的数字的字符串.返回值是int,与 s 中包含的数字等效的 32 位有符号整数. Parse方法主要有三个异常: 1)System.Argument

int.Parse()容易出现的异常及解决办法

对于转化string s try{ int year = int.Parse(s);} 异常 条件 ArgumentNullException s 为 null 引用(在 Visual Basic 中为 Nothing) FormatException  s 的格式不正确 OverflowException  s 表示小于 MinValue 或大于 MaxValue 的数字 那么如何处理异常呢?只需在下面加入下面的函数: catch (Exception){ system.out.println

关于int.Parse()的异常

一.int.Parse(string 变量名) 该方式是将数字内容的字符串转换为int类型 1.如果字符串的内容为Null ,则抛出ArgumentNullException异常: 2.如果字符串内容不是数字,则抛出FormatException异常: 3.使用该方法只能处理字符串的内容,而且转换后的字符串内容要在int类型的可表示范围之内,若超出,则抛出OverflowException异常. 二.在网上搜索相关内容,Convert.ToInt32().int.Parse().int.TryP

Int.Parse与ConvertToInt的区别

最近在公司做一个项目的时候,在某次 跟组长讨论的时候.对一个简单的线发生了一些讨论.感觉挺有收获的.现在来总结一下. 在代码开发的时候,底层代码,不要写try-catch.因为写异常处理之后,代码的执行效率会大大的降低.底层的代码,不写异常,但是要经过严格的测试,确保正确.而对于界面层来说,必须接收异常.程序崩溃是非常不友好的.而且也降低了用户对你程序的信任. 对几个小问题的整理: 1.try-catch是否影响效率 自己简单测试了一下,感觉不到效率有什么变化. 然后查找一系列相关博客.发现了一

关于 int.parse("abcd") 出错的问题分析及解决方案

问题分析: 首先,int.Parse()是一种类容转换,表示将数字内容的字符串转为int类型.该函数要求被操作的字符串由数字组成,因此存在三种可能的输入异常情况: 1. 如果字符串为空,则抛出ArgumentNullException异常: 2. 如果字符串内容不是数字,则抛出FormatException异常: 3. 如果字符串内容所表示数字超出int类型可表示的范围,则抛出OverflowException异常: 所以 int.parse("abcd") 出错原因在于字符串的内容不

C#整数三种强制类型转换int、Convert.ToInt32()、int.Parse()的区别

1.int适合简单数据类型之间的转换,C#的默认整型是int32(不支持bool型); 2.int.Parse(string sParameter)是个构造函数,参数类型只支持string类型; 3.Convert.ToInt32()适合将Object类型转换为int型; 4.Convert.ToInt32()和int.Parse()的细微差别: 对于空值(null)的处理不 同,Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则 会产生异常

Convert.ToInt32、(int)和int.Parse三者的区别

前者适合将object类类型转换成int类型,如Convert.ToInt32(session["shuzi"]); (int)适合简单数据类型之间的转换: int.Parse适合将string类类型转换成int类型,如int.Parse(session["shuzi"].ToString()). (1)这两个方法的最大不同是它们对null值的处理方法:    Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会