黑马程序员技术交流社区

标题: java 对不连续一组数字进行分组 [打印本页]

作者: lfs454766767    时间: 2014-8-19 14:51
标题: java 对不连续一组数字进行分组
本帖最后由 lfs454766767 于 2014-8-20 08:16 编辑

同学问我这样一道题,有会的没?

28,29,30,35,36,37,87,88,101,102,103,104,105,106

以上是一串数字,数字连续在一起的分成一组,共有5组


请教高手如何分组成(28,29,30)   (35,36,37)   (87,88)   (101,102,103,104,105,106)这样五组

作者: fantacyleo    时间: 2014-8-19 15:18
只考虑连续递增这种情况的话,代码如下:
  1. public class Test {
  2.         public static void main(String agrs[]) {
  3.                 int[] numbers = {28,29,30,35,36,37,87,88,101,102,103,104,105,106};
  4.                 for (int i = 0; i < numbers.length; i++) {
  5.                         if (i == 0) {
  6.                                 System.out.print("(" + numbers[i]);
  7.                         }
  8.                         else if (numbers[i] == numbers[i - 1] + 1) {
  9.                                 System.out.print("," + numbers[i]);
  10.                         }
  11.                         else {
  12.                                 System.out.println(")");
  13.                                 System.out.print("(" + numbers[i]);
  14.                         }
  15.                        
  16.                         if (i == numbers.length - 1)
  17.                                 System.out.print(")");
  18.                 }
  19.       
  20.         }
  21. }
复制代码

如果还要考虑连续递减,加一个flag变量判断一下就行了
作者: lfs454766767    时间: 2014-8-19 15:27
fantacyleo 发表于 2014-8-19 15:18
只考虑连续递增这种情况的话,代码如下:

如果还要考虑连续递减,加一个flag变量判断一下就行了 ...

太感谢你了!
作者: happymouse    时间: 2014-8-19 16:18
本帖最后由 happymouse 于 2014-8-19 16:29 编辑
  1. <blockquote>public class ArrayTest
复制代码

作者: happymouse    时间: 2014-8-19 16:29
  1. public class ArrayTest
  2. {
  3.         public static void main(String[] agrs)
  4.         {
  5.                 int[] num = { 28, 29, 30, 35, 36, 37, 87, 88, 101, 102, 103, 104, 105, 106 };
  6.                 System.out.print("(" + num[0]);
  7.                 for (int x = 1; x < num.length - 1; x++)
  8.                 {
  9.                         if (num[x] - num[x - 1] != 1)
  10.                         {
  11.                                 System.out.print("),(" + num[x]);
  12.                                 continue;
  13.                         }
  14.                         System.out.print("," + num[x]);
  15.                 }
  16.                 System.out.print("," + num[num.length - 1] + ")");
  17.         }
  18. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2