【问题标题】:How do I return from a void method如何从 void 方法返回
【发布时间】:2020-06-30 10:09:02
【问题描述】:

我有一个问题,代码中的注释在哪里,如下: 我的代码试图从我的getFullCollection() 方法中提取 7 张随机卡片, 但是,它不允许 Me 返回任何值,因为它声明 void 方法不能返回值。代码:

public class Packs {
    Deck classicSet = new Deck() {
    public void getFullCollection() {
    classicSet.getFullCollection();
    Random PO = new Random();
    int number;
    for(int counter = 1; counter<=7;  counter++) {
        number = 1+PO.nextInt(10000000);
        if(number < 41650) {
            return packag.Cards.Rarity.Common; //the problem
        }

上面写着:

void 方法不能返回值

public void getFullCollection() throws IOException{
            Cards Shuriken = new Attacks(3, 2, packag.Cards.Effects.Return, packag.Cards.Class.Ninja, packag.Cards.Rarity.Common, ImageIO.read(new File("Shuriken.png")));
            System.out.println(Shuriken.toString());
            this.cards.add(Shuriken);

我尝试删除我的 getFullCollection() 类上的 void 返回类型并将其替换为 public int getFullCollection(),但它不起作用

    class Attacks extends Cards {   
    private int damage;
    private int Mana;
    private final Effects effects;
    private BufferedImage card;
    private final Rarity rarity;
    private final Class class1;
    Attacks(int damage, int Mana, final Effects effects, final Class class1, final Rarity rarity, BufferedImage card) {
    super(Mana, effects, rarity, class1, card);
        this.damage = damage;
        this.rarity = rarity;
        this.class1 = class1;
        this.effects = effects;
        this.Mana = Mana;           
        this.card = card;
    }

这种方法是我在getFullCollection方法中制作卡片的方法。

【问题讨论】:

    标签: java eclipse void


    【解决方案1】:

    您是否正在通过覆盖 getFullCollection() 方法创建一种特殊形式的卡片组?

    您能否简单描述一下第一个代码 sn-p 应该做什么,以便我更好地理解?

    如果你这样做了,你就不能使用回报

    我假设这个 for 循环是用来确定你的卡应该是什么稀有度,所以如果你想以这种方式使用你的回报,你可能不得不将其提供给另一种方法

    【讨论】:

    • 是的,很抱歉,所以我创建了 3 个主要类,第一个,攻击扩展了设置卡片外观的卡片,第二个 getFullCollection 类,我在其中使用我在第一类创建卡片,第三类我声明我只想使用 getFullCollection 中的卡片(我打算添加更多扩展),生成一个随机数,并根据玩家滚动的数字返回一张卡片
    • 所以在这个 getFullCollection 方法中,你想返回一个卡片列表?
    • 所以你可以让你的方法返回一个 List 或者你尝试在方法中处理所有这些东西而不返回
    【解决方案2】:

    作为@MartinScheuchenpflug pointed out,我不能在这里使用return 语句。以下是关于如何围绕该 return 语句跳舞的代码:

    if (number < 10000001) {
        Random cards = new Random();
        int i1 = cards.nextInt(7);
        if(i1 == 0) {
            pack_cards.add(packag.Deck.Shuriken);
                                                             
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 2013-01-05
      相关资源
      最近更新 更多