字符串str="2,3,4,5,6,7,8,9,11,13,14" 
变为"2-9,11,13-14" 

解决方案 »

  1.   

    public class Test {
    public static void main(String[] args) {
    String str = new String(
    "1,2,3,4,5,6,7,8,9,11,13,14,1000,1001,1002,1003");
    String[] s = str.split(",");
    int[] num = new int[s.length];
    String result = "";
    for (int i = 0; i < s.length; i++) {
    num[i] = Integer.parseInt(s[i]);
    }
    for (int i = 0; i < num.length; i++) {
    if (i == 0) {
    result = "" + num[i];
    } else if (i == num.length - 1) {
    if (num[i] - num[i - 1] == 1) {
    result = result + "-" + num[i];
    } else {
    result = result + "," + num[i];
    }
    } else {
    if ((num[i] - num[i - 1] == 1) && (num[i + 1] - num[i] == 1)) {
    continue;
    }
    if ((num[i] - num[i - 1] == 1) && (num[i + 1] - num[i] != 1)) {
    result = result + "-" + num[i];
    }
    if ((num[i] - num[i - 1] != 1)) {
    result = result + "," + num[i];
    } } }
    System.out.println(result);
    }
    }
      

  2.   

    class Test{
    public static void main(String [] args){
    String str="2,3,4,5,6,7,8,9,11,13,14";
    String [] str1=str.split(",");
    int[] num = new int[str1.length];
    for (int i = 0; i < str1.length; i++) {
    num[i] = Integer.parseInt(str1[i]);

    int head=num[0];
    int temp=head;
    int tail=head;
    for(int i=0;i<str1.length;i++){
    //如果连续的话
    if(temp==Integer.valueOf(num[i])){
    temp++;
    tail=Integer.valueOf(num[i]);
    }
    //相反重新赋值
    else{
    System.out.println(head+","+tail);
    head=num[i];
    tail=head;
    temp=head+1;
    }
    }
    //输出最后的元素
    System.out.print(head+","+tail);
    }
    }
    为了程序更好理解,没有按特定的格式,可以自己修改一下加上个格式
      

  3.   

    String str = "2,3,4,5,6,7,8,9,11,13,14";
    str = "2-9,11,13-14";搞定
      

  4.   

    //字符串str="2,3,4,5,6,7,8,9,11,13,14"
    //变为"2-9,11,13-14"public class Test {
        private String str = new String("2,3,4,5,6,7,8,9,11,13,14");
        private String num[];
        public void show() {
            num = str.split(","); //转换成字符数组
            int number[] = new int[num.length]; //声明一个整形数组
            for (int i = 0; i < num.length; i++) {
                number[i] = Integer.parseInt(num[i]); //把字符串的内容赋值给整形数组
            }
            String result = "";
            for (int k = 0; k < number.length; k++) {
                if (k == 0) { //第一次循环直接把2存储在字符串result中
                    result = result + number[k];
                } else if (k == number.length - 1) { //最后把14连接到字符串中
                    result = result + "-" + number[k];
                } else {
                    if (number[k] - number[k - 1] == 1 &&
                        number[k + 1] - number[k] == 1) {
                        continue;
                    }
                    if ((number[k] - number[k - 1] == 1) &&
                        (number[k + 1] - number[k] != 1)) {
                        result = result + "-" + number[k];
                    }
                    if (number[k] - number[k - 1] != 1) {
                        result = result + "," + number[k];
                    }
                }
            }
            System.out.println(result);
        }    public static void main(String args[]) {
            Test shi = new Test();
            shi.show();
        }
    }