大家帮帮忙,如何从一组数字取出连续的数字?100分哈

kohisa 2013-04-26 02:24:41
0 1 2 4 5 6 9 10

取出来变成这样
0-2
4-6
9-10
...全文
246 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
kohisa 2013-04-26
  • 打赏
  • 举报
回复
谢谢大家的帮助。
星空独行 2013-04-26
  • 打赏
  • 举报
回复
xunis 2013-04-26
  • 打赏
  • 举报
回复
引用 7 楼 xunis 的回复:


public class Test {
	    public static void main(String[] args)
	    {
	    	int[] i = {0, 1, 2, 4, 5, 6, 9, 10};
    		int tmp = -1;
	    	for (int j = 0; j < i.length; j++) {
	    		if (tmp==-1){
	    			tmp=i[j];
	    			System.out.print(tmp+"-");
	    		}else if (tmp+1==i[j]){
	    			tmp=i[j];
	    		}else if(tmp+1<i[j]){
	    			System.out.println(tmp);
	    			System.out.print(i[j]+"-");
	    			tmp=i[j];
	    		}
    			if(j==i.length-1){
	    			System.out.println(tmp);
    			}
	    	}
	    }
}
你要你对数组排好序就都可以出来
xunis 2013-04-26
  • 打赏
  • 举报
回复


public class Test {
	    public static void main(String[] args)
	    {
	    	int[] i = {0, 1, 2, 4, 5, 6, 9, 10};
    		int tmp = -1;
	    	for (int j = 0; j < i.length; j++) {
	    		if (tmp==-1){
	    			tmp=i[j];
	    			System.out.print(tmp+"-");
	    		}else if (tmp+1==i[j]){
	    			tmp=i[j];
	    		}else if(tmp+1<i[j]){
	    			System.out.println(tmp);
	    			System.out.print(i[j]+"-");
	    			tmp=i[j];
	    		}
    			if(j==i.length-1){
	    			System.out.println(tmp);
    			}
	    	}
	    }
}
Mourinho 2013-04-26
  • 打赏
  • 举报
回复

public class Test03 {

	static final int[] arr = new int[] { 0, 1, 2, 4, 5, 6, 9, 10 };

	public static void main(String[] args) {
		takeOut(arr);
	}

	static void takeOut(int[] arr) {
		//假设数组是连续的
		int start = 0, end = start;
		for (int i = 1; i < arr.length; ++i) {
			if (arr[i] - arr[end] == 1) {
				end = i;
			} else {
				System.out.printf("%d-%d\n", arr[start], arr[end]);
				start = i;
				end = start;
			}
		}
		//打印最后一组数据
		System.out.printf("%d-%d\n", arr[start], arr[end]);
	}
}
ZHAOHUHULOVE 2013-04-26
  • 打赏
  • 举报
回复
int []a={0,1,2,4,5,6,9,10}; for (int i = 0; i < a.length; i++) { if(i==0) { System.out.print(a[i]+"-"); } else if(a[i]==a[i-1]+1) { if(i<a.length-1) continue; else System.out.println(a[i]); } else { System.out.println(a[i-1]); System.out.print(a[i]+"-"); } }
brightyq 2013-04-26
  • 打赏
  • 举报
回复

public static void main(String[] args) throws Exception {
		int[] arr = new int[]{0,1,2,4,5,6,9,10};
		String s = "" + arr[0];
		int last = arr[0];
		
		
		for(int i = 1; i < arr.length;i++){
			if(arr[i] - last == 1){
				;
			}else{
				System.out.println(s + "-" + last);
				s = "" + arr[i];
			}
			last = arr[i];
		}
		if(!s.equals("" + last)){
			System.out.println(s + "-" + last);
		}
}
大概这个思路,楼主根据情况改改吧.
kohisa 2013-04-26
  • 打赏
  • 举报
回复
是数组 取出每组连续的头和尾拼成字符串。
大_爱 2013-04-26
  • 打赏
  • 举报
回复
同意楼上的,赶紧把需求说明白吧 如果是跳一个数字取的话,你的步进+2就可以了。
  • 打赏
  • 举报
回复
需求不明确,是字符串,还是数组,取出来是连续,还是跳跃?

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧