2016-05-01 78 views
3

我已排序整数数组{1,2,3,7,9,24,25,26,78},并且想要连续打印{1-3,7,9,24-26 ,78}。也就是说,每当数组中出现一组连续的数字时,我想打印出从最小数到最大数的范围。打印连续号码

import java.util.*; 
import java.lang.*; 
import java.io.*; 

/* Name of the class has to be "Main" only if the class is public. */ 
class Consecutive{ 

public static void main(String[] args){ 
    int[] a={1,2,3,7,9,24,25,26,78}; 

    for(int i=0;i<a.length;i++){ 
     int count=0; 
     int first=0; 

    /* System.out.println(i);*/ 
     first=a[i]; 

     if(a[i+1]-a[i]==1){ 

      count++; 

      int last=a[i]+count; 
      i++; 
      System.out.println(first + " " + last); 

       }else{ 


       System.out.println(a[i]); 

       } 

    } 
} 
} 
+0

与你的问题没有关系,但是你对某个类的名字有一些误解......除非它存在于名为'Main.java'的文件中。 – Makoto

+0

@Makoto:我站好了,谢谢。 –

回答

1

你可以做这样的事情:

if(a.length>0) {    
     int i=0,j=0; 
     do{ 
      j=i+1; 
      while(j<a.length){ 
       if(a[j]-a[i]!=j-i) 
        break; 
       j++; 
      } 
      if(i==j-1) 
       System.out.println(a[i]); 
      else 
       System.out.println(a[i] + "-" + a[j-1]); 
      i=j; 
     }while(i<a.length); 
    } 

我希望它能帮助。

+0

谢谢!有用 – Chandu