iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >如何在 Java 中将 String 转换为 int?
  • 275
分享到

如何在 Java 中将 String 转换为 int?

java开发语言jvmrxjavaboosting 2023-10-24 12:10:41 275人浏览 薄情痞子
摘要

问: 如何将 String 转换为 int? "1234" → 1234 答1: huntsbot.com – 高效赚钱,自由工作 String myString = "1234";int

问:

如何将 String 转换为 int?

"1234"1234

答1:

huntsbot.com – 高效赚钱,自由工作

String myString = "1234";int foo = Integer.parseInt(myString);

如果您查看 Java documentation,您会注意到“捕获”是此函数可以抛出一个 NumberFORMatException,您可以处理它:

int foo;try {   foo = Integer.parseInt(myString);}catch (NumberFormatException e) {   foo = 0;}

(此处理将格式错误的数字默认为 0,但您可以根据需要执行其他操作。)

或者,您可以使用 Guava 库中的 Ints 方法,该方法与 Java 8 的 Optional 结合使用,是一种将字符串转换为 int 的强大而简洁的方法:

import com.Google.common.primitives.Ints;int foo = Optional.ofNullable(myString) .map(Ints::tryParse) .orElse(0)

除了捕获 NumberFormatException 之外,用户还应该注意他们传入的字符串的长度;如果它们的长度足以溢出整数,则可能要考虑使用 Long::parseLong 代替。

它完美地工作。谢谢!

答2:

huntsbot.com – 高效赚钱,自由工作

例如,这里有两种方法:

Integer x = Integer.valueOf(str);// orint y = Integer.parseInt(str);

这些方法之间存在细微差别:

valueOf 返回一个新的或缓存的 java.lang.Integer 实例

parseInt 返回原始 int。

所有情况都相同:Short.valueOf/parseShort、Long.valueOf/parseLong 等。

有关这两种方法的区别,请参见this question

valueOf 方法只是 return valueOf(parseInt(string));

答3:

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

嗯,需要考虑的一个非常重要的点是整数解析器会抛出 NumberFormatException,如 Javadoc 中所述。

int foo;String StringThatCouldBeANumberOrNot = "26263Hello"; //will throw exceptionString StringThatCouldBeANumberOrNot2 = "26263"; //will not throw exceptiontry {      foo = Integer.parseInt(StringThatCouldBeANumberOrNot);} catch (NumberFormatException e) {      //Will Throw exception!      //do something! anything to handle the exception.}try {      foo = Integer.parseInt(StringThatCouldBeANumberOrNot2);} catch (NumberFormatException e) {      //No problem this time, but still it is good practice to care about exceptions.      //Never trust user input :)      //Do something! Anything to handle the exception.}

在尝试从拆分参数获取整数值或动态解析某些内容时,处理此异常很重要。

如何解析“26263Hello”?在那种情况下我想提取 26263

@user463035818 - 请参阅 docs.oracle.com/javase/8/docs/api/java/util/regex/… - "([0-9]+)" 的正则表达式模式将“捕获”一个或多个数字从 1 到 9 的第一个序列。查看该包中的 Matcher 类。

答4:

huntsbot.com – 高效赚钱,自由工作

手动执行:

public static int strToInt(String str){    int i = 0;    int num = 0;    boolean isNeg = false;    // Check for negative sign; if it's there, set the isNeg flag    if (str.charAt(0) == '-') {        isNeg = true;        i = 1;    }    // Process each character of the string;    while( i < str.length()) {        num *= 10;        num += str.charAt(i++) - '0'; // Minus the ASCII code of '0' to get the value of the charAt(i++).    }    if (isNeg)        num = -num;    return num;}

huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。

如果输入大于 2^32 怎么办?如果输入包含非数字字符怎么办?

程序员在加入劳动力队伍时必须学习的一件事,如果不是以前的话,就是永远不要重新发明轮子。这可能是一个有趣的练习,但如果你在商业环境中做这种事情,不要指望你的代码能通过代码审查。

@yohm 这些是特殊情况;您可以处理 long 和一些正则表达式;但是,到那时您可以使用 parseInt。

-1 抱歉,但这是一个非常糟糕的算法,有很多限制,没有错误处理,还有一些奇怪的异常(例如,“”给出异常,“-”将产生 0,“+”产生 -5)。为什么有人会选择这个而不是 Integer.parseInt(s)? - 我明白这是一个面试问题的意义,但是a)这并不意味着你会这样做(这是提问者所问的),b)这个答案无论如何都是一个非常糟糕的例子。

-1 因为如果我想解析一个基数为 31 的 int 怎么办? Integer.parseInt(str, 31) 是这样做的。有点滑稽的评论,但下面是严肃的一点。当其他人已经投入工作时,切勿重新发明轮子

答5:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

另一种解决方案是使用 Apache Commons’ NumberUtils:

int num = NumberUtils.toInt("1234");

Apache 实用程序很好,因为如果字符串是无效的数字格式,则总是返回 0。因此为您节省了 try catch 块。

Apache NumberUtils API Version 3.4

在解析无效数字时,您很少希望使用 0。

@Ryboflavin 不,不是。其中一个是定义明确的语言语义,另一个是例外

您还可以使用重载方法 NumberUtils.toInt(String, int); 指定自己的默认值

答6:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

整数解码

您也可以使用 public static Integer decode(String nm) throws NumberFormatException。

它也适用于基数 8 和 16:

// base 10Integer.parseInt("12");     // 12 - intInteger.valueOf("12");      // 12 - IntegerInteger.decode("12");       // 12 - Integer// base 8// 10 (0,1,...,7,10,11,12)Integer.parseInt("12", 8);  // 10 - intInteger.valueOf("12", 8);   // 10 - IntegerInteger.decode("012");      // 10 - Integer// base 16// 18 (0,1,...,F,10,11,12)Integer.parseInt("12",16);  // 18 - intInteger.valueOf("12",16);   // 18 - IntegerInteger.decode("#12");      // 18 - IntegerInteger.decode("0x12");     // 18 - IntegerInteger.decode("0X12");     // 18 - Integer// base 2Integer.parseInt("11",2);   // 3 - intInteger.valueOf("11",2);    // 3 - Integer

如果您想获得 int 而不是 Integer,您可以使用:

拆箱:int val = Integer.decode(“12”); intValue(): Integer.decode(“12”).intValue();

答7:

一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会

目前我正在为大学做作业,我不能使用某些表达式,例如上面的那些,通过查看 ASCII 表,我设法做到了。这是一个复杂得多的代码,但它可以帮助像我一样受到限制的其他人。

首先要做的是接收输入,在这种情况下是一串数字;我将其称为 String number,在这种情况下,我将使用数字 12 来举例说明,因此 String number = “12”;

另一个限制是我不能使用重复循环,因此也不能使用 for 循环(本来是完美的)。这限制了我们一点,但话又说回来,这就是目标。由于我只需要两位数(取最后两位数),一个简单的charAt解决了它:

 // Obtaining the integer values of the char 1 and 2 in ASCII int semilastdigitASCII = number.charAt(number.length() - 2); int lastdigitASCII = number.charAt(number.length() - 1);

有了代码,我们只需要查看表格,并进行必要的调整:

 double semilastdigit = semilastdigitASCII - 48;  // A quick look, and -48 is the key double lastdigit = lastdigitASCII - 48;

现在,为什么要加倍?好吧,因为一个非常“奇怪”的步骤。目前我们有两个双精度数,1 和 2,但我们需要将其变成 12,我们无法进行任何数学运算。

我们以 2/10 = 0.2 的方式将后者(lastdigit)除以 10(因此为什么要加倍),如下所示:

 lastdigit = lastdigit / 10;

这只是在玩数字。我们把最后一位数字变成了小数。但是现在,看看会发生什么:

 double jointdigits = semilastdigit + lastdigit; // 1.0 + 0.2 = 1.2

无需过多研究数学,我们只是将数字的位数隔离开来。你看,因为我们只考虑 0-9,除以 10 的倍数就像创建一个“盒子”来存储它(回想一下你一年级的老师向你解释什么是单位和一百)。所以:

 int finalnumber = (int) (jointdigits*10); // Be sure to use parentheses "()"

你去吧。考虑到以下限制,您将数字字符串(在本例中为两位数)转换为由这两位数组成的整数:

没有重复循环

没有“魔术”表达式,例如 parseInt

目前尚不清楚这个答案试图解决什么样的问题,首先,为什么任何人都应该有你描述的那个限制,其次,为什么你必须查看一个 ASCII 表,因为你可以简单地使用 '0' 而不是 { 2} 并且永远不必担心它的实际数值。第三,带有 double 值的整个绕道根本没有意义,因为您要除以十,然后再乘以十。结果简直就是semilastdigit * 10 + lastdigit,正如小学所学的那样,当时引入了十进制系统......

答8:

huntsbot.com – 高效赚钱,自由工作

这样做的方法:

Integer.parseInt(s) Integer.parseInt(s, radix) Integer.parseInt(s, beginIndex, endIndex, radix) Integer.parseUnsignedInt(s) Integer.parseUnsignedInt(s, radix) Integer.parseUnsignedInt(s, beginIndex, endIndex, radix) Integer.valueOf(s) Integer.valueOf(s, radix) Integer.decode(s) NumberUtils.toInt(s) NumberUtils.toInt(s, defaultValue)

Integer.valueOf 生成一个 Integer 对象,所有其他方法生成一个原始 int。

最后两种方法来自 commons-lang3 和一篇关于转换 here 的大文章。

答9:

huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。

每当给定的 String 不包含 Integer 的可能性很小时,您就必须处理这种特殊情况。遗憾的是,标准 Java 方法 Integer::parseInt 和 Integer::valueOf 会抛出 NumberFormatException 来表示这种特殊情况。因此,您必须使用异常来进行流控制,这通常被认为是糟糕的编码风格。

在我看来,这种特殊情况应该通过返回一个空的 Optional 来处理。由于 Java 不提供这样的方法,因此我使用以下包装器:

private Optional tryParseInteger(String string) {    try {        return Optional.of(Integer.valueOf(string));    } catch (NumberFormatException e) {        return Optional.empty();    }}

示例用法:

// prints "12"System.out.println(tryParseInteger("12").map(i -> i.toString()).orElse("invalid"));// prints "-1"System.out.println(tryParseInteger("-1").map(i -> i.toString()).orElse("invalid"));// prints "invalid"System.out.println(tryParseInteger("ab").map(i -> i.toString()).orElse("invalid"));

虽然这仍然在内部使用异常进行流控制,但使用代码变得非常干净。此外,您可以清楚地区分 -1 被解析为有效值的情况和无法解析无效字符串的情况。

答10:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

使用 Integer.parseInt(yourString)。

记住以下几点:

Integer.parseInt(“1”); // 好的

Integer.parseInt(“-1”); // 好的

Integer.parseInt(“+1”); // 好的

Integer.parseInt(" 1"); // 异常(空格)

Integer.parseInt(“2147483648”); // 异常(整数限制为 2,147,483,647 的 maximum value)

Integer.parseInt(“1.1”); // 异常(. 或 , 或任何不允许的)

Integer.parseInt(“”); // 异常(不是 0 什么的)

只有一种类型的异常:NumberFormatException

答11:

huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。

将字符串转换为 int 比仅转换数字更复杂。您考虑过以下问题:

字符串是否只包含数字 0-9?

字符串之前或之后的 -/+ 是怎么回事?这可能吗(指会计数字)?

MAX_-/MIN_INFINITY 怎么了?如果字符串是 999999999999999999999 会发生什么?机器可以将此字符串视为 int 吗?

原文链接:https://www.huntsbot.com/qa/OdnY/how-do-i-convert-a-string-to-an-int-in-java?lang=zh_CN&from=csdn

一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会

来源地址:https://blog.csdn.net/kalman2019/article/details/128380101

--结束END--

本文标题: 如何在 Java 中将 String 转换为 int?

本文链接: https://www.lsjlt.com/news/441401.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在 Java 中将 String 转换为 int?
    问: 如何将 String 转换为 int? "1234" → 1234 答1: huntsbot.com – 高效赚钱,自由工作 String myString = "1234";int ...
    99+
    2023-10-24
    java 开发语言 jvm rxjava boosting
  • 怎么在golang中将Int转换为string
    这期内容当中小编将会给大家带来有关怎么在golang中将Int转换为string,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。什么是golanggolang 是Google开发的一种静态强类型、编译型、并...
    99+
    2023-06-14
  • 在Java中如何将double转换为int
    小编给大家分享一下在Java中如何将double转换为int,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在Java编程中,您将有一个double原语值(例如82...
    99+
    2023-06-14
  • 如何将string转换为int类型
    在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。本文将向您介绍如何将字符串转换为整数。1. 使用内置函数int()Python...
    99+
    2023-08-02
  • Python如何将list中的string转换为int
    目录如何将list中的string转换为int在Python2中这样操作在Python3中这样操作Python-string,list,int互转记录如何将list中的string转...
    99+
    2022-11-11
  • c++中怎么将int转换为string
    在C++中,可以使用`std::to_string()`函数将`int`类型转换为`std::string`类型。下面是一个示例:`...
    99+
    2023-08-19
    c++
  • Java中如何将double转换为int?
    Java中如何将double转换为int? 在Java编程中,我们经常需要将一个浮点数(double类型)转换为整数(int类型)。这可以通过使用强制类型转换或Math类中的方法来实现。下面将介绍两种...
    99+
    2023-10-20
    java 开发语言 Java
  • Java如何将字符串String转换为整型Int
    目录用法注意点性能比较用法 在java中经常会遇到需要对数据进行类型转换的场景,String类型的数据转为Int类型属于比较常见的场景,主要有两种转换方法: 1. 使用Integer...
    99+
    2022-11-13
    Java将字符串转换 Java String转换为Int
  • 如何在MySQL中将VARCHAR转换为INT
    要将VARCHAR转换为INT,我们可以使用cast()MySQL中的函数。这是cast()函数的语法。 cast(anyValue as dataType) AS关键字用于分隔两个参数,在AS之前的是要处理的数据,在AS之后的是要转换的数...
    99+
    2023-10-23
    mysql 数据库 java
  • java中怎么将double转换为int
    在Java中,可以使用强制类型转换将double转换为int。强制类型转换可以通过将目标类型放在要转换的值之前并使用圆括号来实现。 ...
    99+
    2023-10-25
    java
  • 在c++中将 int 转换为 string 的最简单的方法
    在C++中,将`int`转换为`string`的最简单的方法是使用`std::to_string()`函数。该函数可以将整数类型转换...
    99+
    2023-08-18
    c++
  • 在Java中将double转换为int的操作方法
    在本文中,我们将看到如何将double转换为int。 在Java编程中,您将有一个double原语值(例如82.14),但是要执行进一步的操作,您需要一个int值(例如82),所以让...
    99+
    2022-11-11
  • golang如何将string转为int类型
    本篇内容介绍了“golang如何将string转为int类型”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!strconv.Atoistrco...
    99+
    2023-07-05
  • 在Java项目中如何将对象转换为String
    在Java项目中如何将对象转换为String?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java中对象转换为String的常用方法:  方法一:String&...
    99+
    2023-05-31
    java string ava
  • Java中将int[]数组转换为List分享
    目录前言为什么不能用 Arrays 的 asList 方法将 int[] 装换成 ArrayList使用stream进行转换(jdk8 推荐)遍历数组,逐个加入元素到List中前言 ...
    99+
    2022-12-09
    Java int[] 数组 转换list java 数组转list Java ArrayList 数组之间相互转换
  • Java将字符串String转换为整型Int的两种方式
    目录Java 如何将String转化为Int附录:Java将字符串String转换为整型Int用法注意点性能比较Java 如何将String转化为Int 在 Java 中要将 Str...
    99+
    2023-05-16
    Java 字符串String转换int Java String转换int
  • javascript如何将值转换为int类型
    这篇文章主要介绍了javascript如何将值转换为int类型,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 在...
    99+
    2022-10-19
  • mysql如何将varchar转换为int类型
    这篇文章主要介绍“mysql如何将varchar转换为int类型”,在日常操作中,相信很多人在mysql如何将varchar转换为int类型问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2022-10-19
  • 怎么在golang中将string与int类型进行转换
    怎么在golang中将string与int类型进行转换?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。golang适合做什么golang可以做服务器端开发,但golang很适...
    99+
    2023-06-06
  • java中如何将字符串转换成int
    在Java中,可以使用`Integer.parseInt()`方法将字符串转换为整数。下面是一个示例代码:```javaString...
    99+
    2023-09-09
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作