java - 在 Java 中创建一副纸牌时出现 ArrayIndexOutOfBoundsException

标签 java arrays indexoutofboundsexception

我希望得到一些帮助,尽管我知道这可能是一个非常简单的错误,我似乎无法找到答案。 我想要完成的是创建一副牌,但我不断遇到越界错误。 这是我的代码:

卡片类别:

public class Card {
    private String suit;
    private int face;

    public Card(int face, String suit){
        face = this.face;
        suit = this.suit;
    }

    public int getFace(){
        return face;
    }

    public String getFaceAsString(int face){
        int faceName = face;
        String faceString = "";
        if(faceName == 11){
            faceString = "J";
        } else if(faceName == 12){
            faceString = "Q";
        } else if(faceName == 13){
            faceString = "K";
        } else if(faceName == 14){
            faceString = "A";
        } else {
            faceString = Integer.toString(faceName);
        }

        return faceString;

    }

    public String getSuit(){
        return suit;
    }

    public void setSuit(String suit){
        this.suit = suit;
    }

 }

这是我的主课:

import java.util.Random;
import java.util.Scanner;

public class Hero_Game {

    public static void main(String[] args) {


        String[] suits = {"Spades","Clubs","Hearts","Diamonds"};
        int[] faces = {2,3,4,5,6,7,8,9,10,11,12,13,14,15};
        int index = 0;

        Card[] deck = new Card[52];

        for(int i = 0; i<suits.length;i++){
            for(int j = 0; j<faces.length;j++){
               deck[index] = new Card(faces[i],suits[j]);
               index++;
            }
        }

最佳答案

您在 for 循环中切换了面数组和花色数组的索引。应该是:

for(int i = 0; i<suits.length;i++){
    for(int j = 0; j<faces.length;j++){
        deck[index] = new Card(faces[j],suits[i]);
        index++;
    }
}

关于java - 在 Java 中创建一副纸牌时出现 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53605081/

相关文章:

java - 在 spring security 访问被拒绝处理程序中确定所需权限的正确方法

java - 在 android 中执行拖放时显示 ClassCastException

php - 来自 SQL 查询的多维数组

javascript - 日期排序 JavaScript

java - 为什么 IndexOutOfBoundsException 现在在 Java 16 中有一个带有长索引作为参数的构造函数?

java - 错误的结果 一旦我处理 try and catch

java - 使用 java servlet 和 Netbeans 从 Oracle 数据库查询数据

c# - 从 C# 调用我自己的 Java 代码

java - 从 arraylist 输出到文件不起作用 - java

mysql - Hibernate 选择空对象