2017-01-14 10 views
0

私のコードでは少し問題があります。私はスキャナの2つの位置と配列の位置を一致させようとしています。それは動作しますが、問題は、コードが数値を2度印刷していることです。どうすればこの問題を解決できますか? 2つの要素が同じ場合は、プリントステイを表示する必要があります。私はすでに同じ質問を見つけようとしましたが、見つけられませんでした。JAVA配列の一致場所

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

プログラムの目的は何ですか? –

+0

私はメモリと呼ばれるゲームを作ろうとしています。あなたはゲームに勝つためにすべてのペアを推測する必要があります。そしてもしあなたがペアを推測しなかったなら、数字は隠れて戻ってくる。これまでのところ、私はこのステップをステップごとに実行しようとしていますが、部分的にしか成功しませんでした。 – user7418776

答えて

0

あなたの声明:

if(memoryGeheugen[i] == memoryGeheugen[raden1]&&memoryGeheugen[i]==memoryGeheugen[raden2]) 

は基本的にmemoryGeheugen [raden1]とmemoryGeheugenは[raden2]互いに等しいと言います。

あなたがそうのように印刷しているのであれば、:あなたの論理条件が同じとして、それらを決定するので

System.out.print(memoryGeheugen[raden1]); 
System.out.print(memoryGeheugen[raden2]); 

次に、あなたが重複した値が印刷されています。

System.out.print(memoryGeheugen[raden1]); 
//System.out.print(memoryGeheugen[raden2]); 

そして、非重複値を得るためにあなたの可能性:もしmemoryGeheugenは[raden1] = memoryGeheugen [raden2]の両方の線を印刷することは不要であるため、

そのため、第2または最初の行をコメントアウトします。

+0

tnx – user7418776

0

それはこれが

* 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あなたは

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

別の行にそれらをしたい場合、これは別の行に

*
をそれらを印刷しますが*
*
*
+0

もし私がそれを変えても、それ以上の!=印字 '*'のために何も起こらない。コードの目的は、それを二重に印字することですが、行の隣に二重に印字するのではありません(33 ***)。それともあなたは何を意味していないのですか?応答のためのtnx – user7418776

+0

@ user7418776私はあなたのニーズに応じて答えを更新したと思います。 –

+0

時間と答えのためのtnx、私はこれを行う別の方法を見つけることを試みる。なぜなら私はそれがスキャナ入力の正確な位置に並んでいる必要があるからです。答えは – user7418776

関連する問題