JAVA 数组匹配位置
JAVA array matching locations
我的代码有点困难。我正在尝试将扫描仪的两个位置与阵列的位置相匹配。它有效,但问题是代码打印了两次数字。我怎么解决这个问题?
如果两个元素相同,我还需要打印保持可见。我已经尝试找到相同的问题,但找不到。
import java.util.Scanner;
public class memory {
int[] memoryGeheugen = {1, 3, 1, 4, 3, 5, 2, 5, 2, 4};
String sterretjes = "*";
boolean dubbel = false;
Scanner scan = new Scanner(System.in);
public void run() {
System.out.println("voer de cijfers in positie 1");
int raden1 = scan.nextInt();
System.out.println("voer de cijfer in positie 2");
int raden2 = scan.nextInt();
for (int i = 0; i < memoryGeheugen.length; i++) {
if (memoryGeheugen[i] != memoryGeheugen[raden1]){
System.out.print(sterretjes);
}
else if(memoryGeheugen[i] == memoryGeheugen[raden1]&&memoryGeheugen[i]==memoryGeheugen[raden2]) {
System.out.print(memoryGeheugen[raden1]);
System.out.print(memoryGeheugen[raden2]);
}
}
}
public static void main(String[] args) {
new memory().run();
}
输出:
voer de cijfers in positie 1:
1
voer de cijfer in positie 2:
4
*33**33*****
你的代码没有错误,因为
System.out.print(memoryGeheugen[raden1]); //raden1 = 1 memoryGeheugen[1] = 3
System.out.print(memoryGeheugen[raden2]); //raden1 = 4 memoryGeheugen[4] = 3
这将打印
*33**33****
如果您希望它们在不同的行中,请使用 System.out::println
if (memoryGeheugen[i] != memoryGeheugen[raden1]){
System.out.println(sterretjes);
}
else if(memoryGeheugen[i] == memoryGeheugen[raden1]&&memoryGeheugen[i]==memoryGeheugen[raden2]) {
System.out.println(memoryGeheugen[raden1]);
System.out.println(memoryGeheugen[raden2]);
}
这会将它们分行打印
*
3
3
*
*
*
您的声明:
if(memoryGeheugen[i] == memoryGeheugen[raden1]&&memoryGeheugen[i]==memoryGeheugen[raden2])
基本上说 memoryGeheugen[raden1] 和 memoryGeheugen[raden2] 是相等的。
所以,如果您像这样打印:
System.out.print(memoryGeheugen[raden1]);
System.out.print(memoryGeheugen[raden2]);
然后您将打印重复的值,因为您的逻辑条件确定它们相等。
因此,注释掉第二行或第一行,因为如果 memoryGeheugen[raden1] = memoryGeheugen[raden2]:
则不需要打印这两行
System.out.print(memoryGeheugen[raden1]);
//System.out.print(memoryGeheugen[raden2]);
而且,您可能会获得 non-duplicated 个值。
我的代码有点困难。我正在尝试将扫描仪的两个位置与阵列的位置相匹配。它有效,但问题是代码打印了两次数字。我怎么解决这个问题? 如果两个元素相同,我还需要打印保持可见。我已经尝试找到相同的问题,但找不到。
import java.util.Scanner;
public class memory {
int[] memoryGeheugen = {1, 3, 1, 4, 3, 5, 2, 5, 2, 4};
String sterretjes = "*";
boolean dubbel = false;
Scanner scan = new Scanner(System.in);
public void run() {
System.out.println("voer de cijfers in positie 1");
int raden1 = scan.nextInt();
System.out.println("voer de cijfer in positie 2");
int raden2 = scan.nextInt();
for (int i = 0; i < memoryGeheugen.length; i++) {
if (memoryGeheugen[i] != memoryGeheugen[raden1]){
System.out.print(sterretjes);
}
else if(memoryGeheugen[i] == memoryGeheugen[raden1]&&memoryGeheugen[i]==memoryGeheugen[raden2]) {
System.out.print(memoryGeheugen[raden1]);
System.out.print(memoryGeheugen[raden2]);
}
}
}
public static void main(String[] args) {
new memory().run();
}
输出:
voer de cijfers in positie 1:
1
voer de cijfer in positie 2:
4
*33**33*****
你的代码没有错误,因为
System.out.print(memoryGeheugen[raden1]); //raden1 = 1 memoryGeheugen[1] = 3
System.out.print(memoryGeheugen[raden2]); //raden1 = 4 memoryGeheugen[4] = 3
这将打印
*33**33****
如果您希望它们在不同的行中,请使用 System.out::println
if (memoryGeheugen[i] != memoryGeheugen[raden1]){
System.out.println(sterretjes);
}
else if(memoryGeheugen[i] == memoryGeheugen[raden1]&&memoryGeheugen[i]==memoryGeheugen[raden2]) {
System.out.println(memoryGeheugen[raden1]);
System.out.println(memoryGeheugen[raden2]);
}
这会将它们分行打印
*
3
3
*
*
*
您的声明:
if(memoryGeheugen[i] == memoryGeheugen[raden1]&&memoryGeheugen[i]==memoryGeheugen[raden2])
基本上说 memoryGeheugen[raden1] 和 memoryGeheugen[raden2] 是相等的。
所以,如果您像这样打印:
System.out.print(memoryGeheugen[raden1]);
System.out.print(memoryGeheugen[raden2]);
然后您将打印重复的值,因为您的逻辑条件确定它们相等。
因此,注释掉第二行或第一行,因为如果 memoryGeheugen[raden1] = memoryGeheugen[raden2]:
则不需要打印这两行System.out.print(memoryGeheugen[raden1]);
//System.out.print(memoryGeheugen[raden2]);
而且,您可能会获得 non-duplicated 个值。