Java 识别数组中的重复数字
我正在处理以下问题。我不是在寻找任何人为我提供解决方案,我是在寻找解决这个问题的指导。以下是我到目前为止的想法 我基本上是先尝试在重复的值周围放置一个(a)。但是我得到了一个越界错误。如果有人能把我推向正确的路径,编写一个小算法来处理这个问题,我会非常感激 我的代码(进行中)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 }; 布尔
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