有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

返回blackjack程序bufferdimage的java方法

我一直在尝试为学校作业制作一个21点程序,但我一直坚持使用我的方法,即取一个随机数并提取一张图片,然后将一张图片添加到一个数组中,我使用该数组来确保不能有两张相同的卡片。然而,我的问题在于,我想在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) 个答案

  1. # 1 楼答案

    为什么要递归调用同一个方法?这是作业吗?如果不是,这是一种非常糟糕的做法。为什么您需要精确的图像?您可以将值作为10打印到控制台中♥ 或者说我喜欢它。将更容易实施。 再说一遍,你为什么要读卡值的字符串?最好的方法是让Card类定义适合和价值,而不是读取 String num=字符串。(i)的价值

    无递归的更好实践:

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

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

     }else {
    
        image = ImportCards();
    
        }
        return image;