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

时间:2017-12-26 10:56:03

标签: java eclipse image blackjack

我一直在尝试为学校作业制作一个二十一点程序,但是我一直坚持使用我的方法,它取一个随机数并用它提取一张图片并在一个数组中添加一个,我用它来确保可以不是两张相同的卡。但是我的问题在于我想在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;
}

1 个答案:

答案 0 :(得分:1)

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

更好的练习,没有递归:

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

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

 }else {

    image = ImportCards();

    }
    return image;