我有一个多部分程序(2个java文件)应该做两件事:
制作一副纸牌(随机播放,处理,重置)
制作扑克游戏(制作两副牌,其他东西......)
由于这个未处理的异常错误,我有一个障碍,我甚至不知道它来自哪里。错误如下图所示,源代码如下。
。
扑克牌异常类
class PlayingCardException extends Exception {
/* Constructor to create a PlayingCardException object */
PlayingCardException (){
super ();
}
PlayingCardException ( String reason ){
super ( reason );
}
}
甲板课 / **类甲板代表:n副扑克牌 *使用班级卡制作n * 52张扑克牌! * *不要添加新的数据字段! *不要修改任何方法 *您可以添加私人方法 * /
class Decks {
/* this is used to keep track of original n*52 cards */
private List<Card> originalDecks;
/* this starts with n*52 cards deck from original deck */
/* it is used to keep track of remaining cards to deal */
/* see reset(): it resets dealDecks to a full deck */
private List<Card> dealDecks;
/* number of decks in this object */
private int numberDecks;
/**
* Constructor: Creates n decks (52 cards each deck) of playing cards in
* originalDecks and copy them to dealDecks.
* initialize numberDecks=n
* Note: You need to catch PlayingCardException from Card constructor
* Use ArrayList for both originalDecks & dealDecks
* @throws PlayingCardException
*/
public Decks(int n) throws PlayingCardException
{
// implement this method!
this.originalDecks = new ArrayList<Card>();
this.dealDecks = new ArrayList<Card>();
int i, j, k;
numberDecks = n;
for (k=0;k<n;k++){
for (i=1;i<14;i++)
{
for(j=0;j<4;j++)
{
Card orcard = new Card(i,j);
originalDecks.add(orcard);
dealDecks.add(orcard);
}
}
}
}
}
答案 0 :(得分:4)
此检查异常正在Decks类的构造函数中声明。
public Decks(int n) throws PlayingCardException
让构造函数抛出异常并不是一个好主意。
您是否确定构造函数中的代码会抛出此异常?
尝试将此代码移动到可在主代码中调用的另一种方法。
答案 1 :(得分:0)
您的构造函数所做的声明是PlayingCardException
是checked exception。这意味着你必须抓住它。
由于您尝试将其用作静态字段,为什么还要将它作为一个检查异常呢?请改为扩展RuntimeException
,如果它出现,您不必在任何时候想要使用它而绝对被强制检查。这样,您就可以按照自己的方式进行静态初始化。