• 当当当当 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~

    ^ ^

  • 相关阅读:
    iOS动画(一)coreAnimation 教程(转)
    sdwebimage基本用法及原理
    iOS推送
    Objective-C中的Block
    loadView、viewDidLoad、initWithCoder、initWithNibName、awakeFromNib的调用时间及用法
    提纲挈领-我的博客内容架构(持续更新)
    读过的书籍及思考系列 (详细列表)-持续更新
    看过的影视及思考系列(详细列表)-持续更新
    自学笔记系列:《Python学习手册 第五版》 -写在开始之前
    《Python网络爬虫权威指南 第二版》 -第1章 软件及BeautifulSoup库准备
  • 原文地址:https://www.cnblogs.com/acrophobia/p/4400938.html
Copyright © 2020-2023  润新知