【问题标题】:Appending indexes to multidimensional arrays in java在java中将索引附加到多维数组
【发布时间】:2013-08-03 10:18:19
【问题描述】:
public class NewDeck {

    public static void main(String[] args){

        String[] suits = new String[] {"Clubs", "Diamonds", "Spades", "Hearts"};

        String[] faces = new String[] {"Ace", "King", "Queen", "Jack"};

        String[][] deck = new String[][] {{},{}};

        int a = 0;
        int b = 0;

        for(String x: suits){

            a ++;

            for(String y: faces){


                deck[a][b] = {{x, y}};  // THIS IS THE LINE I NEED HELP WITH

                b++;

        System.out.println(deck);

            }

        }

    }

}

我期望打印的是:

{{"Clubs, "Ace"}{"Diamonds", "Ace"}{"Spades", "Ace"}{"Hearts", "Ace"}
 {"Clubs, "King"}{"Diamonds", "King"}{"Spades", "King"}{"Hearts", "King"}
 {"Clubs, "Queen"}{"Diamonds", "Queen"}{"Spades", "Queen"}{"Hearts", "Queen"}
 {"Clubs, "Jack"}{"Diamonds", "Jack"}{"Spades", "Jack"}{"Hearts", "Jack"}

当我想打印时:

deck[4][0]

我希望它打印出来:

"Clubs"

我知道我很接近它只有一行我认为我做错了,所以我评论了导致问题的那一行。如果有人知道该放入什么而不是:

deck[a][b] = {{x, y}};

将不胜感激。 感谢您提前提供任何答案

【问题讨论】:

  • 数组是固定大小的。您需要在创建数组时给出数组的大小。

标签: java arrays for-loop multidimensional-array


【解决方案1】:
public static void main(String args[]) {
    String suits[] = new String[] {"Clubs", "Diamonds", "Spades", "Hearts"};
    String faces[] = new String[] {"Ace", "King", "Queen", "Jack"};
    String deck[][] = new String[suits.length * faces.length][2];

    int i=0;

    for (String suit : suits) {
        for (String face : faces) {
            deck[i][0] = suit;
            deck[i][1] = face;
            i++;
        }
    }
}

【讨论】:

  • 完美运行。我不知道为什么我想不出来。只有一件事我不能 100% 确定。你有 [suits.length * faces.length][2]; [2] 是什么意思?
  • @DennisCallanan,每个 suits.length * faces.length 条目又是一个可以正好包含两个字符串的数组
【解决方案2】:
deck[a][b] = {{x, y}};

用这样的东西替换它:

deck[index][0]=x;
deck[index][1]=y;

另外deck[4][0] 不会为您提供正确的结果。请记住,数组的元素索引从 0 开始,到 array-size-1 结束。

System.out.println(deck); 您将无法通过简单地打印数组本身来打印数组的值。
上面的语句将简单地打印数组对象的哈希码。请记住,它是一个数组,而不是 List 或 Set。 您需要遍历数组并打印其中的元素。

【讨论】:

    【解决方案3】:

    我认为你需要一些 Card 类。

    public class NewDeck {
      public static class Card {
        public final String suit;
        public final String face;
        public Card(String suit, String face) {
          this.suit = suit;
          this.face = face;
        }
        public String toString() {
          return "{\"" + suit + "\", \"" + face + "\"}";
        }
      }
      public static void main(String[] args) {
        String[] suits = new String[] {"Clubs", "Diamonds", "Spades", "Hearts"};
        String[] faces = new String[] {"Ace", "King", "Queen", "Jack"};
    
        Card[][] deck = new Card[suits.length][faces.length];
    
        int a = 0;
        int b = 0;
        for(String x: suits){
          b = 0;
          for(String y: faces){
            deck[a][b] = new Card(x, y);
            b++;
          }
          a++;
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 2019-11-21
      相关资源
      最近更新 更多