QA@IT

重複をなくしたい

10126 PV

このプログラムを実行すると重複するのですがどこを間違っているのかわかりません。
なので教えてください

import java.util.ArrayList;

public class Main {
public static void main(String[] args){
Card ca = new Card();
ArrayList role = new ArrayList();
System.out.println("ポーカーを始めます");
System.out.println("あなたの手札は");
while(role.size()=2){
for(int i=0;i<role.size();i++){
if(role.get(i)==role.get(role.size()-1)){
role.remove(i);
}
}
}
}
for(int i=0;i<role.size();i++){
System.out.print(role.get(i));
}
}
}

public class Card {

public String spade(){
    int s = new java.util.Random().nextInt(13)+1;
    if(s==1){
        return "スペードA";
    }if(s==11){
        return "スペードJ";
    }if(s==12){
        return "スペードQ";
    }if(s==13){
        return "スペードK";
    }else{
        return "スペード"+s;
    }
}
public String clover(){
    int c = new java.util.Random().nextInt(13)+1;
    if(c==1){
        return "クローバーA";
    }if(c==11){
        return "クローバーJ";
    }if(c==12){
        return "クローバーQ";
    }if(c==13){
        return "クローバーK";
    }else{
        return "クローバー"+c;
    }
}
public String heart(){
    int h = new java.util.Random().nextInt(13)+1;
    if(h==1){
        return "ハートA";
    }if(h==11){
        return "ハートJ";
    }if(h==12){
        return "ハートQ";
    }if(h==13){
        return "ハートK";
    }else{
        return "ハート"+h;
    }
}
public String diamond(){
    int d = new java.util.Random().nextInt(13)+1;
    if(d==1){
        return "ダイヤA";
    }if(d==11){
        return "ダイヤJ";
    }if(d==12){
        return "ダイヤQ";
    }if(d==13){
        return "ダイヤK";
    }else{
        return "ダイヤ"+d;
    }
}

}

  • そもそもこのコードはエラーでコンパイルすら通らないですし、このままでは何をしたいのか読み取れません。
    なので、どういう動作を期待しているのかということを具体的に書いてもらえれば回答できると思います。
    -

回答

編集 履歴 (0)
  • 返信ありがとうございます。
    できればでいいのですが何で重複するのかを教えていただきたいです。
    -
  • Random は、乱数を生成します。乱数とは、「これまでに生成したことのない数」ではなく、「指定された数までの数のうち、いずれか」です。ですから、「重複しない」という所は、人が考えなければなりません。そこを考えていないから重複します。
    クラス Card は、52枚のカードのうちいずれか1枚です(単数形なのですから)。52枚集まって Deck を構成します。おっと字数制限
    -
  • 取った1枚を手札(Hand)に移していくという方法を使っても、「(手札は)重複しない」を実現できます。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。