0

假设您有一个包含 10 个索引的数组列表,其中仅包括数字 1、2 或 3。如果可能的话,我试图让这些打印而不连续重复相同的数字。

例如,arraylist 包括数字 {1,1,1,2,1,2,2,3,1,2} 我希望它打印为:{1,2,3,1,2,1,2 ,1,2,1}

对不起,如果这可以比我想做的简单得多。我对编程还是很陌生。

    int j;
    int k;
    for (j=0; j<p.size()-1;j++)
    {
        for(k =1; k<p.size()-1;k++)
        {      
            if(p.get(k)==p.get(j))
            {
    //       Person temp = p.get(j);
    //       p.remove(j);
    //       p.add(temp);
            }        
        }
    }
4

2 回答 2

1

不仅如此..试试这个:

for (int i = 0; i < list.size() - 1; i++) {
    if (!list.get(i+1).equals(list.get(i)) {
        System.out.print (list.get(i));
    }
}
于 2012-10-18T17:11:44.620 回答
0

如果我对您的理解正确,您正在尝试打印数字而不连续打印相同的数字超过一次,如果可能的话。

这是一个最接近您要求的简单算法(首选升序,如果可能的话,避免连续两次重复相同的数字)它可能不涵盖所有假设,因为问题没有定义所有可能的情况:

  1. 由于arraylist中的元素只能是1、2、3,所以先读取arraylist中的每个元素,数一数1、2、3各有多少个。
  2. 使用变量来跟踪您打印的前一个数字(在开始时将其初始化为 3),循环直到所有计数器都为零:

    • 如果前一个数字是 3 并且 1 的计数 > 0:打印 1,将 1 保存到“前一个数字”,将计数器减 1。
    • 否则,如果计数 1 == 0,请尝试 2​​,然后尝试 3

    • 如果前一个数为 1 且 2 的计数 > 0:打印 2,将 2 保存到“前一个数”,将计数器减 2。

    • 否则,如果计数为 2 == 0,则尝试 3,然后尝试 1

    • 如果前一个数字是 2 并且 3 的计数 > 0:打印 3,将 3 保存到“前一个数字”,将计数器递减 3

    • 否则,如果计数 3 == 0,请尝试 1,然后尝试 2
于 2012-10-18T17:28:46.613 回答