Java 我似乎无法在我的主视图中创建任何对象?

Java 我似乎无法在我的主视图中创建任何对象?,java,Java,该计划的重点是显示一个扑克和桥牌手。当我运行程序时,我可以让它显示扑克描述,然后如果退出。我想它继续,并显示扑克手,然后桥描述和桥牌手。我觉得我的问题来自抽象的DeckOfCards课程,但我真的不确定 我把所有的类放在同一个文件中,以便在编程时更容易理解和编辑 当程序失败时,它会给出这些错误 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 52 at DeckOfCards.creatCardDeck(P

该计划的重点是显示一个扑克和桥牌手。当我运行程序时,我可以让它显示扑克描述,然后如果退出。我想它继续,并显示扑克手,然后桥描述和桥牌手。我觉得我的问题来自抽象的DeckOfCards课程,但我真的不确定

我把所有的类放在同一个文件中,以便在编程时更容易理解和编辑

当程序失败时,它会给出这些错误

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 52
at DeckOfCards.creatCardDeck(PlayCardGames.java:106)
at DeckOfCards.DeckOfCards(PlayCardGames.java:95)
at PlayCardGames.main(PlayCardGames.java:14)
这是它自己的程序代码(感谢您将其编辑为更好的格式)

import javax.swing.*;
导入java.util.Random;
公开课纸牌游戏{
公共静态void main(字符串[]args){
扑克playPoker=新扑克();
扑克牌;
playPoker.displayDescription();
playPoker.deal();
桥牌playBridge=新桥牌();
playBridge.DeckOfCards();
playBridge.displayDescription();
playBridge.deal();
}
}
//--------------------------------------------------------------------------------\\
界面常数{
最终静态积分卡套装=13;
甲板中的最终静态int=4;
最终静态整数卡牌组中的卡牌=套装中的卡牌*套装中的套装;
}
//================================================================================\\
班级卡{
私服;
私有字符串秩;
兰金德克斯私人酒店;
公共卡(int SuiteIndex、int rankIndex){
setSuit(suiteindex);
setRank(rankIndex);
}
公共字符串getSuit(){
如果(suit.equalsIgnoreCase(“Hearts”){suit=“\u2665”;}
否则如果(suit.equalsIgnoreCase(“钻石”){suit=“\u2666”;}
如果(suit.equalsIgnoreCase(“俱乐部”){suit=“\u2663”;}
else if(suit.equalsIgnoreCase(“Spades”){suit=“\u2660”;}
反诉;
}
公共无效设置(int suitIndex){
如果(suiteindex==1){suit=“Spades”}
如果(suiteindex==2){suit=“Hearts”;}
如果(suiteindex==3){suit=“Diamonds”;}
如果(suiteindex==4){suit=“Clubs”;}
}
公共字符串getRank(){
如果(rankIndex==1){rank=“Ace”;}
如果(rankIndex==11){rank=“Jack”;}
如果(rankIndex==12){rank=“Queen”;}
else如果(rankIndex==13){rank=“King”;}
返回等级;
}
公共无效setRank(int rankIndex){
如果(this.rankIndex>=13){
this.rankIndex=13;}
else if(this.rankIndex 1;k--){
int i=k-1;
int j=rnd.nextInt(k);
卡tmp=温度[i];
温度[i]=温度[j];
温度[j]=tmp;
}
}
公共抽象描述();
公开抽象无效交易();
}
//===============================================================================\\
等级扑克牌{
私用int cardsDealt=5;
私有整数指数=0;
公开作废扑克(){
displayDescription();
交易();
}
public void displayDescription(){
String desc=“在扑克中,玩家在手上下注”+
“\n获胜者可以虚张声势,或者如果被召唤,必须拥有最高的牌”;
showMessageDialog(null,desc);
}
公开无效交易(){
String message=“您的扑克手:\n”;
对于(int x=索引;x
你知道吗,我觉得很简单: 这是您的代码:

for (int suitCounter = 1; suitCounter < CARDS_IN_SUIT; suitCounter++)
        {
            for (int rankCounter = 1; rankCounter < CARDS_IN_SUIT; rankCounter++)
            {
for(int suitecounter=1;suitecounter
我想也许应该是:

for (int suitCounter = 1; suitCounter < SUITS_IN_DECK; suitCounter++)
            {
                for (int rankCounter = 1; rankCounter < CARDS_IN_SUIT; rankCounter++)
                {
for(int suitecounter=1;suitecounter
你能说得更具体一点吗?问题是什么?你是否试图编译代码并得到错误?如果是,请分享你的错误堆栈。仍在阅读。有很多代码。通过缩小问题范围,你会很好地帮助我们帮助你。不过,我不得不说,我从未见过有人使用静态变量接口我不是世界上最大的专家,但这看起来非常错误。也许用一个抽象类来代替?哦,你已经有了一个抽象类来实现deckconstants!失去接口,直接将它们添加到卡片组中!我不一定认为在接口中声明常量是错误的,但KjetilNordin有一点。因为抽象类DeckOfCards实现了接口,所以可以在抽象类中声明常量。@Kjetil
for (int suitCounter = 1; suitCounter < SUITS_IN_DECK; suitCounter++)
            {
                for (int rankCounter = 1; rankCounter < CARDS_IN_SUIT; rankCounter++)
                {