编写一个方法getNums(),传入一个字符串,提取字符串中所有的数值并返回数值列表,多个连在一起的数字可视为一个数值public class NumDemo1 { public static void main(String[] args) { System.out.println(getNums("12%@35e06*a&78")); //输出:[12,35,6,78] System.out.println(getNums("a5Bc24*A%90r#Q8^v")); //输出:[5,24,90,8] } public static List<Integer> getNums(String str){ }}
时间: 2024-01-24 22:05:05 浏览: 46
以下是实现getNums()方法的代码:
```java
import java.util.ArrayList;
import java.util.List;
public class NumDemo1 {
public static void main(String[] args) {
System.out.println(getNums("12%@35e06*a&78")); //输出:[12,35,6,78]
System.out.println(getNums("a5Bc24*A%90r#Q8^v")); //输出:[5,24,90,8]
}
public static List<Integer> getNums(String str){
List<Integer> nums = new ArrayList<>();
int start = -1;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (Character.isDigit(c)) { // 如果是数字
if (start == -1) { // 如果是数字序列的开始
start = i;
}
} else { // 如果不是数字
if (start != -1) { // 如果数字序列已经开始
nums.add(Integer.parseInt(str.substring(start, i)));
start = -1;
}
}
}
if (start != -1) { // 处理最后一组数字序列
nums.add(Integer.parseInt(str.substring(start)));
}
return nums;
}
}
```
代码中,我们使用一个变量 `start` 来记录当前数字序列的起始位置,遍历整个字符串,如果遇到数字,则判断是否已经开始数字序列,没有则设置 `start` 为当前位置;如果遇到非数字,则判断是否已经开始数字序列,有则将数字序列转换为整数,并加入到结果列表中,同时重置 `start`。最后,如果最后一组数字序列没有被处理,则需要将其加入到结果列表中。