【问题标题】:Call Method with parameters from another class使用另一个类的参数调用方法
【发布时间】:2022-01-22 00:02:33
【问题描述】:
package com.test.game;

import java.util.ArrayList;

import java.util.Collections;
import java.util.Random;

public class Card {
    private static String[] colours = new String[]{"E", "L", "H", "S"};
    private static String[] cardValues = new String[]{"7", "8", "9", "10", "B", "D", "K", "A"};
    private String cardValue;
    private String colour;

    private Card(String cardValue, String colour) {
        this.cardValue = cardValue;
        this.colour = colour;
    }





    public String toString() {
        return cardValue + colour;
    }



    static void CardDeck() {
        ArrayList<Card> cards = new ArrayList<Card>();
        for (int i = 0; i < colours.length; i++) {
            for (int j = 0; j < cardValues.length; j++) {
                cards.add(new Card(cardValues[j], colours[i]));
            }
        }
        System.out.println(cards);


    }
    static void Collections(ArrayList<Card> cards, int seed){
        Collections.shuffle(cards, new Random(seed));
        System.out.println(cards);
    }

    public static void main(String[] args) {
        System.out.println();
    }



}

package com.test.game;

import java.util.ArrayList;
import java.util.Random;

public class Game {
    public static void main(String[] args) {
        Card.CardDeck();
        Card.Collections();

    }
}

所以我现在正在开发一款纸牌游戏。第一个类在 CardDeck() 方法的帮助下创建了一个包含卡片的数组列表,该方法在 Game 类中被调用,并且运行良好。现在在 Method Collections() 中,这个数组列表应该被打乱了。这样卡片的顺序是随机的。

因此,我有 2 个问题。首先是我洗牌的方式对吗?我怎么能在另一个类中调用这个Collectinons()method?由于它有参数,所以它不起作用。我发现了一些类似的问题,但它们并没有真正为我工作。 (创建一个新实例)

有人可以帮忙吗?

【问题讨论】:

    标签: java list arraylist methods parameters


    【解决方案1】:

    不要打印CardDeck中的列表(你应该重命名为cardDeck),只需返回卡片组,以便调用者可以使用它:

    static List<Card> cardDeck() {
        ArrayList<Card> cards = new ArrayList<Card>();
        for (int i = 0; i < colours.length; i++) {
            for (int j = 0; j < cardValues.length; j++) {
                cards.add(new Card(cardValues[j], colours[i]));
            }
        }
        return cards;
    }
    

    然后你可以将它传递给你的方法Collections(你应该重命名为shuffle):

    static void shuffle(List<Card> cards, int seed){
        Collections.shuffle(cards, new Random(seed));
    }
    

    不要在那里打印它:调用者总是可以在之后打印它。

    您的main 方法变为:

    public static void main(String[] args) {
        List<Card> deck = Card.cardDeck();
        Card.shuffle(deck, whatever);
        System.out.println(deck);
    }
    

    【讨论】:

    • 感谢您的建议,但我仍然无法调用 shuffle 方法。当我尝试使用 Card.shuffle(); 从 Game 类调用它时,() 得到 IntelliJ 的下划线。错误说 'com.test.game.Card' 中的 'shuffle(java.util.ArrayList, int)' 不能应用于 '()'
    • 啊,没关系,谢谢你!
    • 还有一个问题。如果我必须在 cardDeck() 处使用返回。我应该如何在我的其他课堂上打印出来。当我在 shuffle() 中执行相同操作时,它表示我需要 cardDeck() 中的参数,但我不想要一个。
    • @KepaArizzabalaga System.out.println(deck);
    • @KepaArizzabalaga 你有你的套牌;打印出来。
    猜你喜欢
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 2016-12-03
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多