如何防止嵌套for循环重复java

时间:2017-02-08 01:44:43

标签: java arrays

我必须创建一个数组并获取该数组的值,以确定数组中的哪些数字间隔两个数字。我认为那部分出来但我的输出是重复的,我需要它不要那样做。如何防止重复答案。

这是我的代码:

import java.util.Scanner;

public class Separation {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int x = scan.nextInt();
        int y = scan.nextInt();
        int[] values = new int[y];
        for(int j = 0; j < values.length; j++){
            values[j] = scan.nextInt();     

        for(int i = 0; i < values.length; i ++){
            for(int k = 0; k < values.length; k++){
                if(values[i] == (values[k]-x))
                    System.out.print(values[k] + "," +  values[i] + " -- ");
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:3)

你的缩进隐藏了这个问题。在开始第二个循环之前,需要终止初始化for循环。我还通过稍微修改第3个for循环来删除了一些冗余比较,但是您可能不需要对程序进行更改。另外,我强烈建议使用IDE,在编写代码时会自动缩进代码。它会捕获这些类型的错误,因为如果你用大括号犯了错误,它会以意想不到的方式缩进你的代码:

import java.util.Random;
import java.util.Scanner;

public class Separation {

    public static void main(String[] args) {
        //Random r = new Random();
        Scanner scan = new Scanner(System.in);
        System.out.print("Enter k");
        int x = scan.nextInt();
        System.out.print("Enter number of values:");
        int y = scan.nextInt();
        int[] values = new int[y];
        for (int j = 0; j < values.length; j++) {
            values[j] = scan.nextInt();
        }

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

                if (Math.abs((values[i] - values[k]))==x)
                    System.out.print(values[k] + "," + values[i] + " -- ");
            }

        }

    }
}