如何将String转换为int?
"1234" → 1234
如何将String转换为int?
"1234" → 1234
当前回答
如上所述,Apache Commons的NumberUtils可以做到这一点。如果无法将字符串转换为int,则返回0。
您还可以定义自己的默认值:
NumberUtils.toInt(String str, int defaultValue)
例子:
NumberUtils.toInt("3244", 1) = 3244
NumberUtils.toInt("", 1) = 1
NumberUtils.toInt(null, 5) = 5
NumberUtils.toInt("Hi", 6) = 6
NumberUtils.toInt(" 32 ", 1) = 1 // Space in numbers are not allowed
NumberUtils.toInt(StringUtils.trimToEmpty(" 32 ", 1)) = 32;
其他回答
可以通过七种方式实现:
import com.google.common.primitives.Ints;
import org.apache.commons.lang.math.NumberUtils;
String number = "999";
Ints.tryParse:int result=Ints.tryParse(数字);NumberUtils.createInteger:整数结果=NumberUtils.createInteger(数字);应用到内部的数字:int result=NumberUtils.toInt(数字);整数值:整数结果=Integer.valueOf(数字);整数.分析整数:int result=Integer.parseInt(数字);整数代码:int result=Integer.decode(数字);整数.分析未签名:int result=Integer.parseUnsignedInt(数字);
例如,这里有两种方法:
Integer x = Integer.valueOf(str);
// or
int y = Integer.parseInt(str);
这些方法略有不同:
valueOf返回java.lang.Integer的新实例或缓存实例parseInt返回基元int。
所有情况都是一样的:Short.valueOf/parseShort、Long.valueOf/parseLong等。
目前我正在做一项大学作业,在那里我不能使用某些表达式,例如上面的表达式,通过查看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,我们无法进行任何数学运算。
我们将后者(最后一个数字)除以10,以2/10=0.2的方式(因此为什么要加倍),如下所示:
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等“魔法”表达式
有多种方法可以将字符串int值转换为Integer数据类型值。您需要处理字符串值问题的NumberFormatException。
整数.分析Intfoo=整数.parseInt(myString);整数值foo=Integer.valueOf(myString);使用Java 8可选APIfoo=可选.Nullable(myString).map(整数::parseInt).get();
Google Guava有tryParse(String),如果无法解析字符串,则返回null,例如:
Integer fooInt = Ints.tryParse(fooString);
if (fooInt != null) {
...
}