比较每一个数字字串,只要长度大于当前的最大长度max,都将子串存到list中,所以此时list中的并不全是长度最长的子串,只要在输出时添加判断条件(length==max)即可筛选输出所有的最长子串。
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNextLine()){
            String s = in.nextLine();
            int max = 0;  // 最长长度
            ArrayList<String> list = new ArrayList();  // 存放数字字串
            for(int i=0;i<s.length();i++){
                int sum = 0, k = i;
                while(i<s.length() && s.charAt(i)>='0' && s.charAt(i)<='9'){
                    sum++;
                    i++;
                }
                if(sum >= max){
                    max = sum;
                    list.add(s.substring(k,i));  // 存放数字字串,里面并不全是长度最长的字串
                }
            }
            for(int i=0;i<list.size();i++){
                if(list.get(i).length() == max){ // 输出所有的最长字串,长度不等于max的子串不输出
                    System.out.print(list.get(i));
                }
            }
            System.out.println(","+max);
        }
    }
}