问题
输入一段字符串,从中提取1000-3999(包括1000,3999),输入并打印,以空格隔开
列如
输入:20201515abc2020 100 4000 3999
输出:2020 3999
思路
1.定义一个截取字符串数组,遍历输入的字符串,如果字符属于0-9,用字符串拼接存入数组。
2.定义一个指定数组,存入1000-3999的字符串
3.比对两个字符串数组
代码
package test0917.demo1;
import java.util.Scanner;
/**
* 从字符串中提取指定数字
* @author : Bei-Zhen
* @date : 2020-09-17 18:56
*/
public class Demo1 {
private static int length = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//输入一行字符串
String s = sc.nextLine();
String[] cutArray = new String[s.length()];
//截取字符串放入指定数组
for (int i = 0; i < s.length(); i++) {
String temps = "";
//数字0-9的ASCLL码为48-57
while(s.charAt(i) >= 48 && s.charAt(i) <= 57){
//字符串拼接数字
temps += s.charAt(i);
//防止数组越界
if(i + 1 == s.length()){
break;
}
i++;
}
cutArray[length] = temps;
length++;
}
String[] need = new String[3000];
//指定数字放入数组
for (int i = 0,j = 1000; i < 3000; i++,j++) {
need[i] = j + "";
}
//比对两个字符串数组
int num = 0;
while(num < length) {
for (int i = 0; i < need.length; i++) {
if(cutArray[num].equals(need[i])){
System.out.print(cutArray[num] + " ");
}
}
num++;
}
}
}
运行结果
154415255241gfsdgfds2020 1580 999 3999 4000
2020 1580 3999