题目

从字符串中提取第一个整数(简单 atoi)

思路

本题从字符串里提取第一个整数(简易 atoi)。 跳过前导空白,可选处理负号;然后只要当前字符是数字,就 val = val*10 + (digit) 并后移引用;没有数字时按题面返回 0 或报错。

解题分析

跳过空白,可选符号,连续读数字字符累加 val=val*10+digit,遇非数字停。比完整 atoi 简单,不处理溢出与十六进制。

完整程序

import java.io.*;

public class Main {
    public static void main(String[] args) {
        String line = "-42abc";
        int i = 0;
        while (i < line.length() && Character.isWhitespace(line.charAt(i))) i++;
        int sign = 1;
        if (i < line.length() && line.charAt(i) == '-') {
            sign = -1;
            i++;
        }
        else if (i < line.length() && line.charAt(i) == '+') i++;
        int val = 0;
        while (i < line.length() && Character.isDigit(line.charAt(i)))
        val = val * 10 + (line.charAt(i++) - '0');
        System.out.println(sign * val);
    }
}

运行示例

输出:

-42