Java 整数解析不工作 publicstaticintparseint(字符串s){ int-val=0; 对于(int i=s.length()-1,times=1;i>=0;i--,times*=10){ char c=s.charAt(i); int x=c-‘0’; 如果(x>=0&&x

Java 整数解析不工作 publicstaticintparseint(字符串s){ int-val=0; 对于(int i=s.length()-1,times=1;i>=0;i--,times*=10){ char c=s.charAt(i); int x=c-‘0’; 如果(x>=0&&x,java,Java,我正在制作自己的int解析器,比如Integer.parseInt(String);而且它不能正常工作。我将其传递给方法“43545332”,它将其打印回我的“111111111”您没有以任何方式将x添加到val上。你只是增加了10的幂。你没有以任何方式将x添加到val上。你只是增加了10的幂。Changeval+=次至val+=x更改val+=次数至val+=x您没有以任何方式将x添加到val上。您只需添加10的倍数。if(条件);如果(!(条件)){doSomething();}可以(也可能

我正在制作自己的int解析器,比如Integer.parseInt(String);而且它不能正常工作。我将其传递给方法“43545332”,它将其打印回我的“111111111”

您没有以任何方式将
x
添加到
val
上。你只是增加了10的幂。

你没有以任何方式将
x
添加到
val
上。你只是增加了10的幂。

Change
val+=次
val+=x

更改
val+=次数
val+=x

您没有以任何方式将
x
添加到
val
上。您只需添加10的倍数。
if(条件);如果(!(条件)){doSomething();}
可以(也可能应该)重写为
if(!(条件)){doSomething();}
。在您的情况下,您可能正在寻找
如果(!Character.isDigit(c))抛出…
。谢谢。你是对的,你可以把它作为一个答案,它现在工作得很完美。你没有以任何方式将
x
添加到
val
上。您只需添加10的倍数。
if(条件);如果(!(条件)){doSomething();}
可以(也可能应该)重写为
if(!(条件)){doSomething();}
。在您的情况下,您可能正在寻找
如果(!Character.isDigit(c))抛出…
。谢谢。你是对的,你可以把它作为一个答案,它现在工作得很完美。
public static int parseInt(String s) {
    int val = 0;
    for (int i = s.length() - 1, times = 1; i >= 0; i--, times *= 10) {
        char c = s.charAt(i);
        int x = c - '0';
        if (x >= 0 && x < 10)
            ;
        else
            throw new NumberFormatException("not an int '" + c + "'");

        x *= times;
        val += times;
    }
    return val;
}