题目
从字符串中提取第一个整数(简单 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