【Java】字符串转换为数字:Integer的parseInt方法

Java官方文档[1]的解释

public static int parseInt​(String s) throws NumberFormatException
Parses the string argument as a signed decimal integer. The characters in the string must all be
decimal digits, except that the first character may be an ASCII minus sign ‘-’ (’\u002D’) to indicate
a negative value or an ASCII plus sign ‘+’ (’\u002B’) to indicate a positive value. The resulting
integer value is returned, exactly as if the argument and the radix 10 were given as arguments to
the parseInt(java.lang.String, int) method.
_
Parameters:
s - a String containing the int representation to be parsed
Returns:
the integer value represented by the argument in decimal.
Throws:
NumberFormatException - if the string does not contain a parsable integer.

中文翻译

我来简单翻译一部分。

对于Integer类的静态方法public static int parseInt​(String s) throws NumberFormatException
它能够将String类型的参数,解析为一个带符号的十进制整数。字符串中的字符,必须是十进制数字,在这个十进制数字的第一个字符前,可以是ASCII字符的-或Unicode字符的'\u002D来表明这是一个负值,或者是一个ASCII字符的+或Unicode字符的'\u002B来表明这是一个正值。这个作为结果的整数值会被return,如果使用方法parseInt(java.lang.String, int)并为其传参(String s,10)也能达到和当前方法一样的效果。

  • 参数:
    • s: 一个要被解析的字符串,这个字符串看起来是一个整数
  • 返回值:
    • 一个整数值,它由十进制数字表示
  • 异常抛出:
    • NumberFormatException:如果字符串没有包含可以被解析的整数

极简解释 & 应用

简而言之,我们就是要将String类型的整数转化成int类型的整数。

字符串只允许出现十进制数字、正号(+)和负号(-),当然,如果是Unicode编码也可以,一般不会这样用。

我们先来列举一些正确的例子,如:

  1. "100"–>100
  2. "-100"–>-100
  3. "+200"–>200

示例代码:

String s = "100";
int sToInt = Integer.parseInt(s);

但是,如果字符串出现了其他符号,就会抛出NumberFormatException

例如:

  1. "1.1"
  2. "abc"
  3. "&%#"

我们需要捕获并且处理这个异常,给出一个示例代码。

public class TestSubmitException {public static void main(String[] args) {String[] salesOrders = {"1111", "28120821", "-111", "+1111", "1.11", "abc"};submitOrders(salesOrders);}public static void submitOrders(String[] salesOrders) {int[] salesOrdersInteger = new int[salesOrders.length];try {int i = 0;for (String s : salesOrders) {salesOrdersInteger[i] = Integer.parseInt(s);i++;}} catch (NumberFormatException e) { e.printStackTrace();}for (int a : salesOrdersInteger) {System.out.println(a);}}
}

运行结果是
在这里插入图片描述

java.lang.NumberFormatException: For input string: "1.11"at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)at java.base/java.lang.Integer.parseInt(Integer.java:652)at java.base/java.lang.Integer.parseInt(Integer.java:770)at testCode.TestSubmitException.submitOrders(TestSubmitException.java:35)at testCode.TestSubmitException.main(TestSubmitException.java:21)
1111
28120821
-111
1111
0
0Process finished with exit code 0

我们可以看到最后Process finished with exit code 0,说明程序,成功处理了异常并且正常退出了。

参考资料

[1] Java11官方文档 Integer.parseInt(String s)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/384694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在win10上使用Vmware安装Mac OS

安装macOS 如何在Windows上VMware上安装macOS Catalina 10.15 做一些提示: 如果您在第一次启动mac的时候,在出现【语言选择】之前,出现了连接蓝牙内容。 您可以将教程中【修改为win10 x64】那一步跳过,请注意,如果您…

JDBC 防御性编程

防御性编程(Defensive Programming) 什么是Defensive Programming[1]? 原文:Defensive programming is a form of defensive design intended to ensure the continuing function of a piece of software under unforeseen circu…

【Java】异常处理的目的

编程思维:Defensive Programming 我们写好程序,将其打包,然后用户就可以使用和运行,但是,外界的情况是未知的,我们的程序很可能因为某个因素的出现而崩溃,因此,对于我们可以预测到的…

【Coursera】Getting Started with Python:Week One - Reading: Welcome to The Class

原文 & 翻译 Reading: Welcome to The Class Welcome to Getting Started with Python, the first class in our Python for Everybody Specialization. We have built this class specifically for those with no prior programming experience. With a relatively simpl…

【Java】获取目录及其子目录文件的相关事宜

获取目录及其子目录文件的代码 public class Main {public static void main(String[] args) {String path "D:/"; File f new File(path);Main.getFile(f);}public static void getFile(File file){if(file ! null){File[] f file.listFiles();if(f ! null){for…

【计算机思维】面向人的开发 站在巨人的肩膀上

思维转变:使用其他程序员开发的“黑箱”,不要重复造轮子 以Java举例,从常用的集合框架开始,我们要产生新的思维转变了,我们已经学会了基本的功能,但是在真正开发的时候,用基础功能去做开发效率…

【Computer Organization】The Core Design Thinking of single cycle CPU

1 Overview This section introduces someting that maybe you need to know before learning. Note:This CPU is based on MIPS instruction set. 1.1 Tools LogisimCS 3410 ComponentsMARS MIPS simulatorWin10 or Mac OS 1.2 Courses 自己动手画CPU《计算机组织与结构实…

【汇编语言】王爽 - 内中断复习

0 前言 基于王爽《汇编语言》和Coursera的《计算机组成》课程。 1 中断分类 CPU在执行指令的过程中,产生了一个异常/中断,因为CPU只能同时执行一条指令,所以需要暂停该指令的执行,转而去处理异常/中断信息。 这个异常可以来…

【算法】蛮力法/穷举法/枚举法 的基本问题分析

炮兵问题的优化,设立逻辑数组 蛮力法设计思想 有策略地穷举 验证 制定穷举策略避免重复 简单来说,就是列举问题所有可能的解,然后去看看是否满足题目要求,是一种逆向解题方式。(我也不知道答案是什么,…

如何高效学习算法【实例 + 可视化】

对于初学者来说,学习算法,不应该先学习抽象的理论,那样没有感觉,越学越晕,应该: 有具体的例子有可视化过程 同时需要结合理论知识对照学习,理论扎实、实践有效,同时要有结果反馈。…

【计算机网络实验·北航】实验一:网络实验入门(1)

1.3 远程在线环境使用 PCA、PCB、PCC和PCD:4台PC机S1、S2:2台交换机R1、R2:2台路由器中间的设备:组网连线器 远程组网连线: 使用PCA上的组网连线软件,配置组网连线器,实现组网连线。 PCA和PCB…

【C++】int与string转换

头文件&#xff1a;<string>&#xff0c;注意&#xff0c;这与<string.h>、<cstring>不是一回事儿语法&#xff1a;int x to_string(str)&#xff0c;其中string str "1"。

【C++】rand函数的基本使用

rand()函数用于生成伪随机数&#xff0c;每次生成的随机数都不变&#xff0c;方便我们调试程序。 重要是的随机数的范围公式&#xff08;适用整数&#xff09; 公式&#xff1a; 确定范围加偏移量 例如&#xff1a;a和b是整数 [a,b]&#xff0c;范围是b - a 1&#xff0c…

【操作系统】虚拟化CPU、Memory,共享文件

几个概念 CPU、虚拟CPU进程内存、虚拟地址空间 物理的CPU被OS虚拟成了多个虚拟的CPU&#xff0c;这些虚拟CPU分别运行各自的程序&#xff0c;这些正在运行的程序被称为进程。物理内存被OS虚拟成了多个虚拟地址空间&#xff0c;每个进程都有独立的、自己的地址空间&#xff0c;…

【Linux】编译C语言文件(-o -lpthread)

在gcc中使用-o编译 对于一个一般的程序&#xff0c;直接使用gcc <C语言文件名> -o <编译后生成的文件名>即可&#xff0c;例如以下程序&#xff1a; // cpu.c #include <stdio.h> #include <unistd.h> #include <stdlib.h>int main(int argc,…

【Linux】Ubuntu下进行C语言编程

前言 需要您会使用Windows下cd切换目录的基本命令&#xff0c;否则请先自学相关知识&#xff0c;之后再阅读本文。 0 基础命令 介绍最基础的Linux终端命令。 su - root&#xff1a;切换到root用户&#xff08;不用也可以&#xff09;ls&#xff1a;查看当前目录位置cd&…

【Linux】Ubuntu 18下安装Vim自动补全插件YouCompleteMe(可高速下载安装)

前言 本文写于2020年10月&#xff0c;如果你多年后看见这篇文章&#xff0c;方法可能已经失效&#xff0c;但是请牢记&#xff0c;尽量下载你所处时代的最新版本的软件&#xff0c;会减少很多麻烦。 摆正心态 即便按照本文操作&#xff0c;由于你的系统状态和我的不一样&…

【操作系统】进程调度(1):FIFO(先进先出)算法 原理与实践

0 前言 本文基于书籍《Operating System&#xff1a;Three Easy Pieces》。 中译本&#xff1a;《操作系统导论》&#xff0c;中译本质量还可以&#xff0c;但是英文版后来的更新&#xff0c;中文版目前没有进行同步更新&#xff08;写下此文的时间是2020年10月&#xff09; 1…

【操作系统】进程调度(2a):SJF(短任务优先) 算法 原理与实践

0 前言 接上一篇文章&#xff1a;进程调度&#xff08;1&#xff09;&#xff1a;FIFO&#xff08;先进先出&#xff09;算法 原理与实践 1 前提铺垫 请参考上一篇文章的前提铺垫部分&#xff0c;本文与之完全一致。 2 SJF 原理 SJF&#xff08;Shortest Job First&#x…

【操作系统】进程调度(2b):STCF(最短完成时间优先) 算法 原理与实践

0 前言 接上一篇文章&#xff1a;进程调度&#xff08;2a&#xff09;&#xff1a;SJF&#xff08;短任务优先&#xff09; 算法 原理与实践 1 前提铺垫 与上一篇同。 2 STCF 原理 STCF&#xff08;Shortest Time-to-Completion First&#xff09;最短完成时间优先。 2.1…