单独输出字符串中的整数,然后输出
问题描述:
用户将输入一个字符串,程序应该识别整数。 如果用户输入Hello12 3
应该输出:
单独输出字符串中的整数,然后输出
The integral numbers are:
id1 12
id2 3
但在我的代码,它输出
The integral numbers are:
int1
int2
int3
int4
int5
int6 12
int7 3
应该怎么解决? 我的代码:
import java.util.*;
public class LexicalAnalyzer {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
String str;
int j=0;
System.out.println("Lexical Analyzer for Algebraic Expressions\n");
System.out.print("Enter the String: ");
str = input.nextLine();
System.out.println("String length is: "+str.length());
System.out.println("\nThe integral numbers are: \n");
String intNum = str.replaceAll("[^0-9]", " ");
String[] intSplit = intNum.split(" ");
for(int i=0;i<intSplit.length;i++){
System.out.println("int"+(i+1)+" "+intSplit[i]);
}
}
}
答
而是关于修改字符串浪费时间(CPU资源),只需搜索你想要的东西:
Matcher m = Pattern.compile("[0-9]+").matcher(str);
for (int i = 1; m.find(); i++)
System.out.println("int" + i + " " + m.group());
答
您正在用空格替换每个非数字字符。您需要用""
替换它,以便没有多余的空格。然后你在空间分裂,你会得到期望的结果。此外,还需要使用[^0-9\\s]
来保留数字之间的空格,以便空格不会被""
(空字符串)替代。
替换:
String intNum = str.replaceAll("[^0-9]", " ");
有:
String intNum = str.replaceAll("[^0-9\\s]", "");
你”用空格替换非数字字符,然后将结果拆分为空格字符。它吐出的数组将会有一堆空的元素作为结果...在获得数字之前,仍然需要迭代的元素。 – JonK