0

これは私が作成した推測ゲームをプレイするためのコードですが、問題は、Java の初心者である私が苦手で、いくつかのガイダンスが必要な問題がいくつかあったことです。コードに沿って、横に矢印で強調表示されたいくつかのエラーがありました。

    import java.util.*;

public class GuessingGame
{


    private static Player house;
    private static Player player;

    private static int wins;
    private static int loses;
    private String name;
    int card1,card2;
    private int value;



    public void Player(String name){

        this.name=name;
        card1 = (Integer) null;
        card2 = (Integer) null;
    }



public void Card(int value){

     this.value = value;
    }





public int getValue(){
            return value;
        }



public void acceptDeal(Card card1, Card card2){
        Random r = new Random();
        int value = r.nextInt(13) + 1;
        card1 = new Card(value);            <<<<<<<<======= Error 1
        value = r.nextInt(13) + 1;
        card2 = new Card(value);            <<<<<<<<======= Error 2
    }



public static void init()
{

    house = new Player("House");                 <<<<<<<<======= Error 3
    player = new Player("Player");               <<<<<<<<======= Error 4
    wins = 0;
    loses = 0;

}


    public static void playGame() 
    {
       Scanner scan = new Scanner(System.in);

        char option, playAgain;
        int houseHandStrength, playerHandStrength;
        System.out.println("Welcome to our card guess 1.0 game!");
        System.out.println();

        do {
            // Deal cards to the house and player.
            house.acceptDeal(new Card(houseHandStrength), new Card(houseHandStrength));    <<<<<=== Error 5
            player.acceptDeal(new Card(playerHandStrength), new Card(playerHandStrength));  <<<<<=== Error 6    

            System.out.println(house);

            // Determine whether the player wants to play this hand.
            do {
                System.out.print("Deal cards? (Y/N) ");
                option = Character.toLowerCase(scan.next().charAt(0));
            }
            while (option != 'n' && option != 'y');

            if (option == 'y')
            {
                System.out.println(player);

                // Display hand strength of both players.
                houseHandStrength = house.getHandStrength();    <<<<<=== Error 7
                playerHandStrength = player.getHandStrength();  <<<<<=== Error 8
                System.out.println("The dealer's hand strength is: " + houseHandStrength);
                System.out.println("Your hand strength is: " + playerHandStrength);
                System.out.println();

                // If the player has a stronger hand.
                if (player.getHandStrength() > house.getHandStrength())
                {
                    System.out.println("** You won the hand! **");
                    wins++;
                }
                else {
                    System.out.println("The house wins this round!");
                    loses++;
                }
            }

            // Display the win/lose statistics.
            System.out.println("Current wins: " + wins);
            System.out.println("Current loses: " + loses);

            // Prompt whether the user wants to play again.
            do {
                System.out.print("Would you like to play again? (Y/N) ");
                playAgain = Character.toLowerCase(scan.next().charAt(0));
            }
            while (playAgain != 'n' && playAgain != 'y');           

            System.out.println();
            System.out.println("*******************************************************");
        }
        while (playAgain == 'y');

        System.out.println();
        System.out.println("Thank you for playing!");
    }

    public static void main(String[] args)
    {
        init();
        playGame();
    }
}
4

4 に答える 4

1

まず、StackOverflow へようこそ。宿題タグを見つけて使用したことを確認できてうれしいです。人々があなたを助けることができるようにするには、より多くの情報を提供する必要があることに注意してください. エラーの意味、コードを実行するとどうなるかなど

Card発生するエラーに関しては、実際にはクラスを定義していないように見えますがPlayer、コードには2つのメソッドGuessingGame.Card()とクラスGuessingGame.Player()がありますGuessingGame。それらを内部(または外部)クラスに変更すれば問題ありません;)

于 2012-04-26T11:55:31.017 に答える
1

コードをまとめたようです。Player、Card、および Game クラスを結合しました。私は便利な Java コンパイラを持っていませんが、あなたがしようとしているのは 3 つのモデルを分解することです。

エラー 1 ~ 6 は、クラスが存在しないときに新しいオブジェクトをインスタンス化しようとした結果です。エラー 7 ~ 8 は、同じメソッドを呼び出そうとした結果です。

import java.util.*;

class Player {
    int card1, card2;
    private String name;

    public void Player(String name){
        this.name=name;
        card1 = (Integer) null;
        card2 = (Integer) null;
    }

    public void acceptDeal(Card card1, Card card2){
        Random r = new Random();
        int value = r.nextInt(13) + 1;
        card1 = new Card(value);            <<<<<<<<======= Error 1
        value = r.nextInt(13) + 1;
        card2 = new Card(value);            <<<<<<<<======= Error 2
    }
}


class Card {
    private int value;

    public void Card(int value){
        this.value = value;
    }

    public int getValue(){
        return value;
    }
}


public class GuessingGame
{
    private static Player house;
    private static Player player;
    private static int wins;
    private static int loses;

    public static void init()
    {
        house = new Player("House");                 <<<<<<<<======= Error 3
        player = new Player("Player");               <<<<<<<<======= Error 4
        wins = 0;
        loses = 0;
    }

    public static void playGame() 
    {
        Scanner scan = new Scanner(System.in);

        char option, playAgain;
        int houseHandStrength, playerHandStrength;
        System.out.println("Welcome to our card guess 1.0 game!");
        System.out.println();

        do {
            // Deal cards to the house and player.
            house.acceptDeal(new Card(houseHandStrength), new Card(houseHandStrength));    <<<<<=== Error 5
            player.acceptDeal(new Card(playerHandStrength), new Card(playerHandStrength));  <<<<<=== Error 6    

            System.out.println(house);

            // Determine whether the player wants to play this hand.
            do {
                System.out.print("Deal cards? (Y/N) ");
                option = Character.toLowerCase(scan.next().charAt(0));
            }
            while (option != 'n' && option != 'y');

            if (option == 'y')
            {
                System.out.println(player);

                // Display hand strength of both players.
                houseHandStrength = house.getHandStrength();    <<<<<=== Error 7
                playerHandStrength = player.getHandStrength();  <<<<<=== Error 8
                System.out.println("The dealer's hand strength is: " + houseHandStrength);
                System.out.println("Your hand strength is: " + playerHandStrength);
                System.out.println();

                // If the player has a stronger hand.
                if (player.getHandStrength() > house.getHandStrength())
                {
                    System.out.println("** You won the hand! **");
                    wins++;
                }
                else {
                    System.out.println("The house wins this round!");
                    loses++;
                }
            }

            // Display the win/lose statistics.
            System.out.println("Current wins: " + wins);
            System.out.println("Current loses: " + loses);

            // Prompt whether the user wants to play again.
            do {
                System.out.print("Would you like to play again? (Y/N) ");
                playAgain = Character.toLowerCase(scan.next().charAt(0));
            }
            while (playAgain != 'n' && playAgain != 'y');           

            System.out.println();
            System.out.println("*******************************************************");
        }
        while (playAgain == 'y');

        System.out.println();
        System.out.println("Thank you for playing!");
    }

    public static void main(String[] args)
    {
        init();
        playGame();
    }
}
于 2012-04-26T12:23:23.210 に答える
1

たぶん、他のクラスを一番上にインポートする必要がありますか?

問題は自分のクラスだけにあるようですが、プログラムの出力はエラーについて何と言っていますか?

public void Player(String name)...そして public void Card(int value)...

クラスのはずですよね?それらを別のファイルでクラスとして宣言し、メイン ファイルに含めます。

于 2012-04-26T11:55:48.300 に答える
1

前の質問 card1card2は、タイプは でしCardた。それは正しかったのですが、あなたはこれを変更しましたが、今は間違っています。

于 2012-04-26T11:56:22.123 に答える