我必须创建一个数组并获取该数组的值,以确定数组中的哪些数字间隔两个数字。我认为那部分出来但我的输出是重复的,我需要它不要那样做。如何防止重复答案。
这是我的代码:
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] + " -- ");
}
}
}
}
}
答案 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] + " -- ");
}
}
}
}