如何将String转换为int?
"1234" → 1234
如何将String转换为int?
"1234" → 1234
当前回答
使用Integer.parseInt(yourString)。
记住以下几点:
整数.parseInt(“1”);//好啊
整数.parseInt(“-1”);//好啊
整数.parseInt(“+1”);//好啊
整数.parseInt(“1”);//异常(空格)
整数.parseInt(“2147483648”);//异常(整数限制为最大值2147483647)
整数.parseInt(“1.1”);//异常(.或,或任何不允许的)
Integer.parseInt(“”);//异常(不是0或其他)
只有一种类型的异常:NumberFormatException
其他回答
您也可以使用此代码,但要注意一些事项。
选项#1:显式处理异常,例如,显示消息对话框,然后停止当前工作流的执行。例如:尝试{字符串字符串值=“1234”;//从字符串到整数int integerValue=Integer.valueOf(stringValue);//或int整数值=整数.ParseInt(字符串值);//现在从整数返回字符串stringValue=String.valueOf(整数值);}catch(NumberFormatException ex){//JOptionPane.showMessageDialog(帧,“无效输入字符串!”);System.out.println(“输入字符串无效!”);回来}选项#2:如果发生异常,执行流可以继续,则重置受影响的变量。例如,在catch块中进行了一些修改catch(NumberFormatException ex){整数值=0;}
使用字符串常量进行比较或任何类型的计算总是一个好主意,因为常量永远不会返回空值。
使用Integer.parseInt(yourString)。
记住以下几点:
整数.parseInt(“1”);//好啊
整数.parseInt(“-1”);//好啊
整数.parseInt(“+1”);//好啊
整数.parseInt(“1”);//异常(空格)
整数.parseInt(“2147483648”);//异常(整数限制为最大值2147483647)
整数.parseInt(“1.1”);//异常(.或,或任何不允许的)
Integer.parseInt(“”);//异常(不是0或其他)
只有一种类型的异常:NumberFormatException
正如我在GitHub上写的:
public class StringToInteger {
public static void main(String[] args) {
assert parseInt("123") == Integer.parseInt("123");
assert parseInt("-123") == Integer.parseInt("-123");
assert parseInt("0123") == Integer.parseInt("0123");
assert parseInt("+123") == Integer.parseInt("+123");
}
/**
* Parse a string to integer
*
* @param s the string
* @return the integer value represented by the argument in decimal.
* @throws NumberFormatException if the {@code string} does not contain a parsable integer.
*/
public static int parseInt(String s) {
if (s == null) {
throw new NumberFormatException("null");
}
boolean isNegative = s.charAt(0) == '-';
boolean isPositive = s.charAt(0) == '+';
int number = 0;
for (int i = isNegative ? 1 : isPositive ? 1 : 0, length = s.length(); i < length; ++i) {
if (!Character.isDigit(s.charAt(i))) {
throw new NumberFormatException("s=" + s);
}
number = number * 10 + s.charAt(i) - '0';
}
return isNegative ? -number : number;
}
}
这是一个完整的程序,所有条件都是正的和负的,不使用库
import java.util.Scanner;
public class StringToInt {
public static void main(String args[]) {
String inputString;
Scanner s = new Scanner(System.in);
inputString = s.nextLine();
if (!inputString.matches("([+-]?([0-9]*[.])?[0-9]+)")) {
System.out.println("Not a Number");
}
else {
Double result2 = getNumber(inputString);
System.out.println("result = " + result2);
}
}
public static Double getNumber(String number) {
Double result = 0.0;
Double beforeDecimal = 0.0;
Double afterDecimal = 0.0;
Double afterDecimalCount = 0.0;
int signBit = 1;
boolean flag = false;
int count = number.length();
if (number.charAt(0) == '-') {
signBit = -1;
flag = true;
}
else if (number.charAt(0) == '+') {
flag = true;
}
for (int i = 0; i < count; i++) {
if (flag && i == 0) {
continue;
}
if (afterDecimalCount == 0.0) {
if (number.charAt(i) - '.' == 0) {
afterDecimalCount++;
}
else {
beforeDecimal = beforeDecimal * 10 + (number.charAt(i) - '0');
}
}
else {
afterDecimal = afterDecimal * 10 + number.charAt(i) - ('0');
afterDecimalCount = afterDecimalCount * 10;
}
}
if (afterDecimalCount != 0.0) {
afterDecimal = afterDecimal / afterDecimalCount;
result = beforeDecimal + afterDecimal;
}
else {
result = beforeDecimal;
}
return result * signBit;
}
}
对于Android开发者来说,以下是Kotlin的各种解决方案:
// Throws exception if number has bad form
val result1 = "1234".toInt()
// Will be null if number has bad form
val result2 = "1234"
.runCatching(String::toInt)
.getOrNull()
// Will be the given default if number has bad form
val result3 = "1234"
.runCatching(String::toInt)
.getOrDefault(0)
// Will be return of the else block if number has bad form
val result4 = "1234"
.runCatching(String::toInt)
.getOrElse {
// some code
// return an Int
}