返回二十一点程序的bufferdimage的方法

问题描述 投票:1回答:1

我一直试图为学校作业制作一个二十一点程序但我已经卡住了我的方法,它取一个随机数并用它提取一张图片并在一个数组中添加一个我用来确保不能有两个同一张卡片。但是我的问题在于我想在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;
}
java eclipse image blackjack
1个回答
1
投票

为什么要递归调用相同的方法?这是一项任务吗?如果没有,这是一个非常糟糕的做法。为什么需要精确的图像?您可以将值打印到控制台中,如10♥或类似它。实施起来会容易得多。更重要的是,你为什么读取卡片的价值?最好的方法是让Card类定义suit和value,而不是读取String num = String.valueOf(i);

更好的练习,没有递归:

while (image == null ){
   image = importCards();
}

但如果您坚持使用递归,请将方法的结果分配给变量:

 }else {

    image = ImportCards();

    }
    return image;
© www.soinside.com 2019 - 2024. All rights reserved.