繁体   English   中英

如何防止嵌套for循环在java中复制答案

[英]How do i prevent a nested for loop from duplicating answers in java

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

这是我的代码:

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] + " -- ");
                }
            }
        }
    }
}

你的缩进隐藏了这个问题。 在开始第二个循环之前,需要终止初始化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] + " -- ");
            }

        }

    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM