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){ int i,j,k; int flag=1,star = 0,end=0; ArrayList<Integer> array = new ArrayList<Integer>(); for (i=0;i<str.length();i++){ if (str.charAt(i)>='0'&&str.charAt(i)<='9'){ if(flag==1){ flag=0; star=i; }else{ end=i; String s =str.substring(star,end+1); int y = Integer.parseInt(s); array.add(y); flag=1; } } if (flag==0){ String s =str.substring(star); int y = Integer.parseInt(s); array.add(y); flag=1; } } return array; } }
时间: 2023-12-20 10:03:59 浏览: 58
这是一个 Java 程序,实现了从字符串中提取数字的功能。程序中定义了一个名为 `getNums` 的静态方法,它接受一个字符串作为参数,并返回一个整数列表。
方法中使用了循环遍历字符串中的每个字符,如果当前字符是数字,则将 flag 设为 0,表示正在处理数字;如果 flag 为 0,说明正在处理数字,如果当前字符不是数字,则将数字的起始位置和结束位置记录下来,然后将其转换为整数并添加到列表中,最后将 flag 设为 1,表示数字处理完毕。
如果循环结束后 flag 仍为 0,说明最后一个数字还没有处理完成,需要将其转换为整数并添加到列表中。
需要注意的是,程序中使用了 `substring` 方法来截取子字符串,并使用 `parseInt` 方法将字符串转换为整数。这两个方法都有可能抛出异常,因此应该在调用时进行异常处理。
相关问题
编写一个方法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){ }}
public static List<Integer> getNums(String str) {
List<Integer> nums = new ArrayList<>();
String numStr = "";
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (Character.isDigit(c)) {
numStr += c;
} else if (!numStr.equals("")) {
nums.add(Integer.parseInt(numStr));
numStr = "";
}
}
if (!numStr.equals("")) {
nums.add(Integer.parseInt(numStr));
}
return nums;
}
java编写一个方法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){ } }
可以使用正则表达式来实现,代码如下:
```
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
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> result = new ArrayList<>();
Pattern pattern = Pattern.compile("\\d+"); //匹配数字
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
result.add(Integer.valueOf(matcher.group())); //将匹配到的数字转换成整数并添加到结果列表中
}
return result;
}
}
```
阅读全文