JAVA数组匹配位置

时间:2017-01-14 14:56:57

标签: java arrays matching elements

我的代码有点困难。我试图匹配扫描仪的两个位置与阵列的位置。它的工作原理,但问题是代码打印数字两次。我怎么解决这个问题? 如果两个元素相同,我还需要打印保持可见。我已经尝试找到同样的问题,但我找不到它。

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*****

2 个答案:

答案 0 :(得分:0)

由于

,您的代码中没有出现错误
BaseViewModel

这将打印

  

* 33 ** 33 ****

如果您希望它们分开显示,请使用System.out.print(memoryGeheugen[raden1]); //raden1 = 1 memoryGeheugen[1] = 3 System.out.print(memoryGeheugen[raden2]); //raden1 = 4 memoryGeheugen[4] = 3

System.out::println

这将以单独的行显示它们

*
3
3
*
*
*

答案 1 :(得分:0)

您的陈述:

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]);

并且,您可能会获得非重复值。