我一直在尝试为学校作业制作一个二十一点程序,但是我一直坚持使用我的方法,它取一个随机数并用它提取一张图片并在一个数组中添加一个,我用它来确保可以不是两张相同的卡。但是我的问题在于我想在if语句中返回图像,但它不允许我,我必须在外面也有它,如果语句不是true,它返回null,我想避免,而是它重新运行该方法,直到选择了未拍摄的图像。我感谢任何帮助,
public static BufferedImage ImportCards() {
String FileLocation;
Double Number;
Number = GetRandom(53);
int i = Number.intValue();
String num = String.valueOf(i);
String main = "DeckOfCards2//Card";
String end = ".png";
BufferedImage image = null;
if (myArray[i] == 0) {
myArray[i] = 1;
playerValue = i;
System.out.println("PLayerValue" + playerValue);
FileLocation = main + num + end;
File file = new File(FileLocation);
try {
image = ImageIO.read(file);
} catch (IOException e) {
System.out.println(e);
}
return image;
} else {
ImportCards();
}
return image;
}
答案 0 :(得分:1)
为什么要递归调用相同的方法?这是一项任务吗?如果没有,这是一个非常糟糕的做法。为什么需要精确的图像?您可以将值打印到控制台中,如10♥或类似它。实施起来会容易得多。 更重要的是,你为什么读取卡片的价值?最好的方法是让Card类定义套装和值而不是读取 String num = String.valueOf(i);
更好的练习,没有递归:
while (image == null ){
image = importCards();
}
但是如果你坚持使用递归,请将方法的结果分配给变量:
}else {
image = ImportCards();
}
return image;