代码示例:
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
//按照非数字分割成数组 ah19iswm222345 --> 19 222345 也就是说长度最长的是想要的
String[] split = s.split("[^1-9]");
String s1 = ""; //定义一个空字符串
for (int i = 0; i < split.length; i++) {
if (s1.length() < split[i].length()) {
s1 = split[i];
}
}
System.out.println(s1);
}
中间知识点:
//正则表达式 [^1-9] 不是1-9的数字
我得详细介绍下split:
先上代码
String ss = ",aa,bb,cc,dd,,,";
String[] array = ss.split(",");
看清楚
aa前面有个逗号!!!!
当我们用split进行逗号分割时
你猜数组长度是多少?
是5!!!
循环遍历 输出结果:
5代表是分割后的数组长度
代码为
System.out.println(array.length);//结果是5,而不是预想中的8
看了这个案例好像明白了
1.你用什么分割 就是用什么当成一把刀 这个刀割完了也就不存在了
2.这个刀前面有空格 都要算一亩地啊
回到我们的题目来
也就是说:
我们用不是数字的字母分割 那分割后的也就没字母了
举个例子:
//按照非数字分割成数组 ah19iswm222345 -->
//会分割成 19 、 222345
//说要选择数字连续最多的
//那我们选择长度最长的 也就是了
因为我们要输出 所以我们需要定义一个新的字符串 但是内容我们不知道 所以我们需要定义一个新的空字符串
String s1 = ""; //定义一个空字符串
因为我们要选择 字符串长度最长的
而没有什么比空字符串更短了
所以我们在循环时 慢慢赋值给空字符串
在循环中 如果循环里的字符串 比 赋值给的空字符串 长度长 那进行替换
反正 一圈循环完 我们的空字符串的值 需要是 最长的
所以我们代码是:
String s1 = ""; //定义一个空字符串
for (int i = 0; i < split.length; i++) {
if (s1.length() < split[i].length()) {
s1 = split[i];
}
}
再说点……
在循环中,一步步来 ,首先是空字符串 因为空字符串是最短的字符串长度了,所以第一次循环,一定会把数组第一个也就是split[0] 复制给空字符串的
那空字符串就有数值了 也就相应的有长度了
那第二次循环 如果长度比第一次的长度大 那就把这个值赋给s1(原来是空字符串s1,循环一次是有了第一次循环数值的s1)
第三次同上 继续比较 但凡比更新后的s1的长度长,那就替换赋值给s1
这样循环下来 s1一定是拥有了循环里最长的数值
最后输出 最长的连续数字
System.out.println(s1);