1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java读取任意字符串_Java提取不规则字符串中的任意数字

java读取任意字符串_Java提取不规则字符串中的任意数字

时间:2023-04-21 06:03:09

相关推荐

java读取任意字符串_Java提取不规则字符串中的任意数字

码农公社 210是何含义?10月24日是程序员节,1024 =210、210既

210

之意。

1.多个由不确定字符隔开的单个数字

该方法只适用于分离字符串中的单个数字字符,因此得到的结果也是个位数的数字。

例如:

1 5、2,5。1 9 2

此时可以考虑将输入存入String变量,依次读取字符串中的每个字符,并判断是否为数字再将其转化为整型数据。

而把单个char类型字符转化为整型的方法,网上已有非常常见的简单转化方法,即将目标数字字符与'0'字符相减,以下做出展示:

importjava.util.ArrayList;

importjava.util.Scanner;

publicclassNumberCollector{

publicstaticvoidmain(String[]arge){

Scannerin=newScanner(System.in);

StringcharList=in.nextLine();

ArrayListnumList=newArrayList<>();

//遍历字符串中每个字符,将数字字符转化为整型数字

for(inti=0;i

if(Character.isDigit(charList.charAt(i))){

//通过将目标数字字符与'0'字符ASCII码相减,结果即为该数字本身的整型数字

numList.add(charList.charAt(i)-'0');

}

}

for(inteach:numList){

System.out.println(each);

}

}

}

2.多个由特定字符隔开的任意数字

相比第一种方法,虽然能够筛选出非个位数的数字,但在操作前,需要明确分割数字的字符。

如果输入的字符串中,数字与数字之间都是被唯一字符隔开,例如:

5 4 6 12 100 3

1,2,51,12,6

则可以采用网上给出的一种普遍处理方法:使用split分割字符串再使用Integer中的ParseInt方法将其进行转换:

importjava.util.ArrayList;

importjava.util.Scanner;

publicclassNumberCollector{

publicstaticvoidmain(String[]args){

Scannerin=newScanner(System.in);

String[]numStr=in.nextLine().split("");//此处以空格字符分割为例

ArrayListnumList=newArrayList<>();

//遍历分割后的字符串数组并依次转型为整型

for(inti=0;i

numList.add(Integer.parseInt(numStr[i]));

}

for(inteach:numList){

System.out.println(each);

}

}

}

3.由任意字符隔开的任意数字

开发中,常会遇到奇怪刁钻的情况,例如输入:5 10,,,103xyz50 a.10

这种情况咋个办嘞?

解决思路:若要提取其中的数字转化为整型数字,可以考虑遍历字符串中每个字符,若该字符为数字,则往预备区里存入该数字字符。

以下给出实现代码:

importjava.util.ArrayList;

importjava.util.Scanner;

publicclassNumberCollector{

publicstaticvoidmain(String[]args){

Scannerin=newScanner(System.in);

StringcharList=in.nextLine();

in.close();

Stringinteger="";//作为数字字符串的预备区

ArrayListnumList=newArrayList<>();

for(inti=0;i

//遍历字符串中每个字符时,若该字符为数字字符,则存入预备区

if(Character.isDigit(charList.charAt(i))){

integer+=charList.charAt(i);

//避免字符串最后一位为数字而遗漏收集的情况

if(i==charList.length()-1){

numList.add(Integer.parseInt(integer));

}

}elseif(!integer.isEmpty()){//读取到非数字字符,并且检查预备区是否为空

numList.add(Integer.parseInt(integer));

integer="";

}

}

//输出收集到的整型数字

for(inteach:numList){

System.out.println(each);

}

}

}

针对上面给出的输入样例,可得输出:

5

10

103

50

10

这种方法同时还可以适用于第一,第二种方法所针对的情况,但如果问题情况非常简单时,当然还是第一,第二种方法省时省力。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。