2016-03-03 153 views
0

我的問題是在最後一個方法「Printhands」,我試圖從稱爲手的2D數組傳遞值到稱爲fourDecks的3D數組。我設法將第一個角度數組deckOfCard傳遞給第二個數組手,但該方法似乎不適用於3D數組。而且,它也必須使用三維數組沒有其他選擇... TY。填充3D數組

import java.util.Random; 

public class Decks { 

public static void main(String[] args) { 

    int[] deckOfCard = new int[52]; 
    int[][] hands = new int[4][13]; 
    int [][][]fourDecks = new int[4][4][13]; 
    generateCard(deckOfCard); 
    printCard(deckOfCard, 13, 5); 
    deal(deckOfCard, hands); 

} 

public static void generateCard(int deckOfCard[]) { 

    boolean[] check = new boolean[52]; 
    int all = 0; 
    int ranNum; 

    while (all < 52) { 
     ranNum = (int) (Math.random() * 52); 
     if (!check[ranNum]) { 
      check[ranNum] = true; 
      deckOfCard[all] = ranNum; 
      all++; 
     } 
    } 
} 

public static void printCard(int deckOfCard[], int row, int space) { 
    System.out.println("Print Card:"); 
    int num = 0; 
    for (int print = 0; print < deckOfCard.length; print++) { 
     String format = "%" + space + "s"; 
     System.out.printf(format, deckOfCard[print]); 
     num++; 
     if (num == row) { 
      System.out.println(); 
      num = 0; 
     } 
    } 
} 

public static void deal(int deckOfCard[], int hands[][]) { 
    System.out.println("DEAL:"); 
    int x = 0; 
    for (int row = 0; row < hands.length; row++) { 
     for (int col = 0; col < hands[row].length; col++) { 
      if (x < deckOfCard.length) { 
       hands[row][col] = deckOfCard[x]; 
       x++; 

      } 
     } 
    } 

    for (int i = 0; i < hands.length; i++) { 
     for (int j = 0; j < hands[i].length; j++) { 

      System.out.print(hands[i][j] + " "); 
     } 
     System.out.println(); 
    } 
} 

public static void PrintHands(String fourDecks[][][], int hands[][]) { 

    String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"}; 
     String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", 
      "10", "Jack", "Queen", "King"}; 


    for (int deck = 0; deck < fourDecks.length; deck++) { 
     for (int row = 0; row < fourDecks[deck].length; row++) { 
      for (int col = 0; col < fourDecks[deck][row].length; col++) { 

       for(int z = 0; z < hands.length; z++){ 

        for(int y = 0; y<hands[z].length;z++){ 

         fourDecks[deck][row][col] = hands[z][y]; 
        } 
       } 




      } 
     } 
    } 
}} 

回答

0

錯誤是在這裏:

fourDecks[deck][row][col] = hands[z][y]; 

你想整數值分配給一個字符串

使用Integer.toString()或類似的東西

+0

大聲笑,我只是意識到像5秒前,謝謝 –

+0

不客氣:) – marko

0

這是錯誤的邏輯

for(int z = 0; z < hands.length; z++){ 

       for(int y = 0; y<hands[z].length;z++){ 

        fourDecks[deck][row][col] = hands[z][y]; 
       } 

你繼續將指針[z] [y]分配到四個相同的位置 - 四個指標不提前,因此只有最後一個z,y將被保留。