javastring⼩数转int_如何在Java中将字符串转换为int?我怎么能转换String成intJava中?
我的字符串只包含数字,我想返回它表⽰的数字。
例如,给定字符串"1234"结果应该是数字1234。
bigdecimal转换为integerStringmyString= "1234";
intfoo= Integer.parseInt(myString);
有关更多信息,请参阅Java⽂档。
例如,这⾥有两种⽅法:
Integerx= Integer.valueOf(str);
// or
inty= Integer.parseInt(str);
这些⽅法之间略有不同:
valueOf 返回⼀个新的或缓存的实例 java.lang.Integer
parseInt返回原始int。
所有情况也是如此:Short.valueOf/ parseShort,Long.valueOf/ parseLong等。
那么,需要考虑的⼀个⾮常重要的问题是Integer分析器抛出了Javadoc中所述的NumberFormatException异常。
intfoo;
String StringThatCouldBeANumberOrNot = "26263Hello"; //will throw exception
String StringThatCouldBeANumberOrNot2 = "26263"; //will not throw exception
try {foo= Integer.parseInt(StringThatCouldBeANumberOrNot);
} catch (NumberFormatExceptione) {
//Will Throw exception!
//do something! anything to handle the exception.
}
try {foo= Integer.parseInt(StringThatCouldBeANumberOrNot2);
} catch (NumberFormatExceptione) {
//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.
}
尝试从split参数获取整数值或动态解析某些内容时处理此异常很重要。
⼿动操作:
public static intstrToInt( Stringstr){
inti= 0;
intnum= 0;
booleanisNeg= 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
}
if (isNeg)num= -num;
returnnum;
}
⽬前我正在为⼤学做作业,在那⾥我不能使⽤某些表达式,⽐如上⾯的表达式,通过查看ASCII表格,我设法做到了。这是⼀个⾮常复杂的代码,但它可以帮助像我⼀样受限制的其他⼈。
⾸先要做的是接收输⼊,在这种情况下是⼀串数字; 我会打电话给它String number,因此,在这种情况下,我将使⽤数字12来举例说明String number = "12";
另⼀个限制是我不能使⽤重复周期,因此,⼀个for周期(这将是完美的)也不能使⽤。这限制了我们⼀些,但是再⼀次,这就是⽬标。由于我只需要两位数字(取最后两位数字),⼀个简单的charAt解决⽅法就是:
// Obtaining the integer values of the char 1 and 2 in ASCII
intsemilastdigitASCII=number.charAt(number.length()-2);
intlastdigitASCII=number.charAt(number.length()-1);
有了代码,我们只需要查看表格并进⾏必要的调整:
doublesemilastdigit=semilastdigitASCII- 48; //A quick look, and -48 is the key
doublelastdigit=lastdigitASCII- 48;
现在,为什么要加倍?那么,因为⼀个⾮常“奇怪”的步骤。⽬前我们有两个双打,1和2,但我们需要把它变成12,没有任何我们可以做的数学运算。
我们以后者(lastdigit)除以10的⽅式2/10 = 0.2(因此为什么加倍)如下所⽰:
lastdigit=lastdigit/10;
这只是玩数字。我们将最后⼀位数字转成⼩数。但现在看看会发⽣什么:
doublejointdigits=semilastdigit+lastdigit; // 1.0 + 0.2 = 1.2
不⽤太深⼊数学,我们只是简单地将单位的数字隔开。你看,因为我们只考虑0-9,除以10的倍数就像创建⼀个存储它的“盒⼦”(回想⼀下你的⼀年级⽼师何时解释你是⼀个单位还是⼀百个单位)。所以:
intfinalnumber= (int) (jointdigits*10); // Be sure to use parentheses "()"
你去了。考虑到以下限制,您将⼀串数字(在本例中为两位数)转换为由这两位数组成的整数:
另⼀种解决⽅案是使⽤Apache Commons的 NumberUtils:
intnum= Int("1234");
Apache实⽤程序很好,因为如果字符串是⽆效的数字格式,则总是返回0。因此保存你的try catch块。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论