如何将String转换为int?

"1234"  →  1234

当前回答

您也可以使用此代码,但要注意一些事项。

选项#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;}

使用字符串常量进行比较或任何类型的计算总是一个好主意,因为常量永远不会返回空值。

其他回答

我们来了

String str = "1234";
int number = Integer.parseInt(str);
print number; // 1234
String myString = "1234";
int foo = Integer.parseInt(myString);

如果您查看Java文档,您会注意到“陷阱”是此函数可以引发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)
import java.util.*;

public class strToint {

    public static void main(String[] args) {

        String str = "123";
        byte barr[] = str.getBytes();

        System.out.println(Arrays.toString(barr));
        int result = 0;

        for(int i = 0; i < barr.length; i++) {
            //System.out.print(barr[i]+" ");
            int ii = barr[i];
            char a = (char) ii;
            int no = Character.getNumericValue(a);
            result = result * 10 + no;
            System.out.println(result);
        }

        System.out.println("result:"+result);
    }
}

我有点惊讶,没有人提到将String作为参数的Integer构造函数。

因此,这里是:

String myString = "1234";
int i1 = new Integer(myString);

Java 8-整数(字符串)。

当然,构造函数将返回类型Integer,并且取消装箱操作将值转换为int。


注1:需要注意的是:此构造函数调用parseInt方法。

public Integer(String var1) throws NumberFormatException {
    this.value = parseInt(var1, 10);
}

注2:已弃用:@deprecated(因为=“9”)-JavaDoc。

每当给定的字符串不包含Integer时,您都必须处理这种特殊情况。遗憾的是,标准的Java方法Integer::parseInt和Integer::valueOf抛出一个NumberFormatException来表示这种特殊情况。因此,您必须为流控制使用异常,这通常被认为是错误的编码样式。

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

private Optional<Integer> 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被解析为有效值的情况和无法解析无效字符串的情况。