Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 识别数组中的重复数字_Java_Algorithm - Fatal编程技术网

Java 识别数组中的重复数字

Java 识别数组中的重复数字,java,algorithm,Java,Algorithm,我正在处理以下问题。我不是在寻找任何人为我提供解决方案,我是在寻找解决这个问题的指导。以下是我到目前为止的想法 我基本上是先尝试在重复的值周围放置一个(a)。但是我得到了一个越界错误。如果有人能把我推向正确的路径,编写一个小算法来处理这个问题,我会非常感激 我的代码(进行中) import java.util.Random; 公开课考试{ 公共静态void main(字符串[]args){ int[]值={1,2,5,5,3,1,2,4,3,2,2,2,3,6,5,5,6, 3, 1 }; 布尔

我正在处理以下问题。我不是在寻找任何人为我提供解决方案,我是在寻找解决这个问题的指导。以下是我到目前为止的想法

我基本上是先尝试在重复的值周围放置一个(a)。但是我得到了一个越界错误。如果有人能把我推向正确的路径,编写一个小算法来处理这个问题,我会非常感激

我的代码(进行中)

import java.util.Random;
公开课考试{
公共静态void main(字符串[]args){
int[]值={1,2,5,5,3,1,2,4,3,2,2,2,3,6,5,5,6,
3, 1 };
布尔inRun=false;
对于(int i=0;i
您的错误就在这里

if (values[i] == values[i + 1] && values[i + 1] < values.length) {
或者你可以用

for (int i = 0; i < values.length - 1; i++) { // the length of values - 1 so we can
                                              // get the next value.
for(inti=0;i
您需要迭代到所有数组,如果它找到一对,则在while循环中再次迭代它,直到它找到非对为止

示例:

 int[] values = { 1, 2, 5, 5, 3, 1, 2, 4, 3, 2, 2, 2, 2, 3, 6, 5, 5, 6, 3, 1 };

 boolean inRun = false;

 for (int i = 0; i < values.length; i++) {

     if (i + 1 < values.length && values[i] == values[i + 1] )
     {
         System.out.print("(");
         while (i + 1 < values.length && values[i] == values[i + 1] )
         {
             System.out.print(values[i++]);
         }
         System.out.print(values[i++]);
         System.out.print(")");
     }
     System.out.print(values[i]);

 }
12(55)31243(2222)36(55)631

考虑通过循环的每一次迭代打印“i”的值。@ HoiPooLi我没有得到你的意思……你能扩展吗?抱歉。我不是已经通过每次迭代打印i的值吗?如果你的语句正在检查<代码>值[i+1] 。当你到达循环的结尾时,这样<代码>值[I]。
是最后一个元素,
值[i+1]
是什么?您可以将数组转换为字符串并使用正则表达式
()\1+
@user:不,您正在打印数组中的值。我的意思是打印实际索引,例如System.out.println(i)然后考虑索引如何随着循环继续变化。在这种情况下,如果我像这样改变它,它不会打印最后一个值。如果像第二个例子那样改变它,你可以打印<代码>值[Valth.Langth-1]。在循环之后。@user2733436您还需要处理运行在最后一个元素单独结束时的情况。太棒了。我一直在思考一些问题。您能推荐一些可以解决更多此类问题的来源或地方吗?因为我想自己开始解决此类问题。@user2733436签出(当前脱机).不同类型的问题,但可以帮助您学习编程语言。
 int[] values = { 1, 2, 5, 5, 3, 1, 2, 4, 3, 2, 2, 2, 2, 3, 6, 5, 5, 6, 3, 1 };

 boolean inRun = false;

 for (int i = 0; i < values.length; i++) {

     if (i + 1 < values.length && values[i] == values[i + 1] )
     {
         System.out.print("(");
         while (i + 1 < values.length && values[i] == values[i + 1] )
         {
             System.out.print(values[i++]);
         }
         System.out.print(values[i++]);
         System.out.print(")");
     }
     System.out.print(values[i]);

 }
12(55)31243(2222)36(55)631