javaの勉強をしています。
多次元配列がうまくいかずに困っています。
ポーカーを作ろうと思っています。
手札が
スペード A, ダイヤ 2, クラブ 3, ハート 4, スペード 5
のときに多次元配列の中身が,
x = {{"スペード", "A"}, {"ダイヤ", "2"}, {"クラブ", "3"}, {"ハート", "4"}, {"スペード", "5"}}
になるようにしたいのですが{"スペード", "A"}のところが{"スペード", "5"}と表示されてしまいます。
Mainのfor文のところで、模様と数字を表示させるようにしてあります。
java初心者ですので、こうするとソース短くなるよ。
などのアドバイスも頂けると幸いです。
java
1 2package game; 3 4public class Main { 5 6 public static void main(String[]args){ 7 Card_index ci = new Card_index(); 8 Keyin k = new Keyin(); 9 10 int hand = 5; 11 int joker = 2; 12 13 String[][] x; 14 15 k.println("自分"); 16 x = ci.drow(hand, joker); 17 k.println("----------------"); 18 19 /* 20 k.println("相手"); 21 ci.drow(hand, joker); 22 k.println("----------------"); 23 //ci.debug(); 24 25 */ 26 for(int i=0; i<x.length; i++){ 27 for(int j=0; j<x[i].length; j++){ 28 k.print(x[i][j]); 29 } 30 k.println(""); 31 } 32 33 ci.debug(); 34 } 35}
java
1 2package game; 3 4import java.util.ArrayList; 5 6public class Card_index { 7 8 Keyin k = new Keyin(); 9 Card[] card = new Card[5]; 10 private int i; 11 private String[][] x; 12 private int r; 13 private int d; 14 15 final String[] Black = {"スペード", "クラブ", "ジョーカー"}; 16 final String[] Red = {"ハート", "ダイヤ", "ジョーカー"}; 17 18 final String[][] Kind = {Black, Red}; 19 final int[] Sheet = {13, 2}; 20 final String[] Color = {"黒", "赤"}; 21 ArrayList<Integer> deck = new ArrayList<Integer>(); 22 23 Card_index(){ 24 reset(); 25 } 26 27 void reset(){ 28 deck.clear(); 29 30 for(i=1; i<=(Sheet[0]*4+2); i++){ 31 deck.add(i); 32 //System.out.println(deck.get(i-1)); 33 } 34 35 // カード4種設定 36 for(i=0; i<card.length-1; i++){ 37 if(i >= 2){ 38 // red 39 card[i] = new Card(Kind[1][i-2], Sheet[0], Color[1]); 40 }else{ 41 //black 42 card[i] = new Card(Kind[0][i], Sheet[0], Color[0]); 43 } 44 //card[i].status(); 45 } 46 // joker 47 card[4] = new Card(Kind[1][2], Sheet[1], Color[0], Color[1]); 48 //card[4].status(); 49 50 } 51 String[][] drow(int hand, int joker){ 52 x = new String[hand][2]; 53 /* 54 * joker 0 = -2 55 * joker 1 = -1 56 * joker 2 = 0 57 */ 58 switch(joker){ 59 case 0: joker = 2; break; 60 case 1: joker = 1; break; 61 case 2: joker = 0; break; 62 default: joker = 2; break; 63 } 64 for(i=0; i<hand; i++){ 65 r = (int)(Math.random()*(deck.size()-joker))+1; 66 d = deck.get(r-1); 67 if(d <= 13){ 68 x[i] = card[0].drow(); 69 deck.remove(r-1); 70 }else if(d <= (13*2)){ 71 x[i] = card[1].drow(); 72 deck.remove(r-1); 73 }else if(d <= (13*3)){ 74 x[i] = card[2].drow(); 75 deck.remove(r-1); 76 }else if(d <= (13*4)){ 77 x[i] = card[3].drow(); 78 deck.remove(r-1); 79 }else{ 80 x[i] = card[4].drow("joker"); 81 deck.remove(r-1); 82 } 83 84 /* 85 // 問題なし 86 k.print(x[i][0]); 87 k.println(x[i][1]); 88 */ 89 } 90 return x; 91 //card[4].drow("joker");// debug 92 } 93 94 95 96 void debug(){ 97 String[] y = new String[2]; 98 x = new String[2][2]; 99 100 y = card[0].drow(); 101 x[0] = y; 102 k.print(x[0][0]); 103 k.println(x[0][1]); 104 105 y = card[0].drow(); 106 x[1] = y; 107 k.print(x[1][0]); 108 k.println(x[1][1]); 109 110 k.print(x[0][0]); 111 k.println(x[0][1]); 112 113 } 114}
java
1 2package game; 3 4import java.util.ArrayList; 5 6public class Card { 7 8 Keyin k = new Keyin(); 9 Judge j = new Judge(); 10 private String kind; 11 private String[] color; 12 private int sheet; 13 14 private int r; 15 private int d; 16 private String[] x = new String[2]; 17 private String r_convert; 18 private String k_convert; 19 ArrayList<Integer> kind_deck = new ArrayList<Integer>(); 20 ArrayList<Integer> joker_deck = new ArrayList<Integer>(); 21 22 23 24 Card(String kind, int sheet, String... color){ 25 this.kind = kind; 26 this.sheet = sheet; 27 this.color = color; 28 29 reset(); 30 } 31 32 void reset(){ 33 kind_deck.clear(); 34 joker_deck.clear(); 35 36 for(int i=1; i<=13; i++){ 37 kind_deck.add(i); 38 } 39 joker_deck.add(0); 40 joker_deck.add(1); 41 } 42 43 void status(){ 44 k.println(kind); 45 k.println(sheet); 46 for(int i=0; i<color.length; i++){ 47 k.println(color[i]); 48 } 49 50 } 51 52 String[] drow(){ 53 r = (int)(Math.random()*kind_deck.size())+1; 54 d = kind_deck.get(r-1); 55 kind_deck.remove(r-1); 56 57 k_convert = j.convert(kind); 58 if(d >= 11 | d == 1){ 59 r_convert = j.convert(d); 60 k.println(k_convert+" :"+r_convert); 61 }else{ 62 k.println(k_convert+" :"+d); 63 } 64 65 x[0] = kind; 66 x[1] = ""+d; 67 return x; 68 } 69 70 String[] drow(String joker){ 71 r = (int)(Math.random()*joker_deck.size())+1; 72 d = joker_deck.get(r-1); 73 joker_deck.remove(r-1); 74 75 k_convert = j.convert(kind); 76 k.println(k_convert+" :"+color[d]); 77 78 x[0] = kind; 79 x[1] = ""+d; 80 return x; 81 } 82 83 void debug(){ 84 // joker list の要素数を取得 85 for(int i=0; i<joker_deck.size(); i++){ 86 System.out.println(joker_deck.get(i)); 87 } 88 89 } 90}
回答2件
あなたの回答
tips
プレビュー