miroCyber 2023-04-06 11:33 采纳率: 40%
浏览 76
已结题

java 字段必须要加staic,new对象都无法使用


import java.util.Random;
import java.util.Scanner;
import java.util.regex.Pattern;

public class DartGame
{

    private  int dartsNumber;
    private Player player;

    private static int playerScore;
    private static int dartScore;

    public DartGame()
    {

    }

    public DartGame(int dartsNumber, Player player, int playerScore, int dartScore) {
        this.dartsNumber = dartsNumber;
        this.player = player;
        this.playerScore = playerScore;
        this.dartScore = dartScore;
    }

    public int getDartsNumber() {
        return dartsNumber;
    }

    public void setDartsNumber(int dartsNumber) {
        this.dartsNumber = dartsNumber;
    }

    public Player getPlayer() {
        return player;
    }

    public void setPlayer(Player player) {
        this.player = player;
    }

    public int getPlayerScore() {
        return playerScore;
    }

    public void setPlayerScore(int playerScore) {
        this.playerScore = playerScore;
    }

    public int getDartScore() {
        return dartScore;
    }

    public void setDartScore(int dartScore) {
        this.dartScore = dartScore;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        DartGame game1 = new DartGame();
        Player player = new Player();
        game1.displayWelcomeMessage();
        String name = game1.inputUserName();
        System.out.println("your name is "+name);
        //put the name into the class of player
        player.setName(name);
        int dartNum = game1.inputDartsNumber();
        System.out.println("your input number of dart = "+dartNum);
        //
        game1.setDartsNumber(dartNum);

        while (true){
            System.out.println("Do you want to start the game? please enter Yes to Start or No to quit the game");
            String isStart = scanner.nextLine();
            //The equalsIgnoreCase() method is used to compare the string with the specified object, regardless of case.
            if(isStart.equalsIgnoreCase("Yes") )
            {
                System.out.println("Welcome to the Darts Game!");
                //initialize field
                game1.setPlayerScore(0);
                game1.setDartScore(0);
                boolean isContinue = game1.playGame();
                    if(isContinue==false)
                    {
                            System.out.println("Bye bye");
                            break;
                    }
                    else if(isContinue ==true)
                    {
                            continue;
                    }

            }
            else if(isStart.equalsIgnoreCase("No"))
            {
                System.out.println("Bye bye");
                break;
            }
            else
            {
                System.out.println("Invalid input, please enter agian");
            }
        }
    }

    public void displayWelcomeMessage()
    {
        System.out.println("Welcome to the Game!");
    }

    public String inputUserName(){
        DartGame game2 = new DartGame();
        Scanner scanner = new Scanner(System.in);
        while(true)
        {
            System.out.print("Please enter your name: ");
            String yourName = scanner.nextLine();
            if(game2.isSmall(yourName) && yourName.length()<=8)
            {
                System.out.println("input correctly");
                return yourName;
            }
            else
            {
                System.out.println("Please enter no more than eight lowercase letters,please enter agian");
            }
        }

    }


    public int inputDartsNumber(){
        DartGame game3 = new DartGame();
        Scanner scanner = new Scanner(System.in);
        while (true){
            System.out.println("Please enter the number of darts you need,the number of darts must between 1 and 5.\nplease enter here:");
            String darts =scanner.nextLine();
            //的撒旦撒旦
            if(game3.isDigits(darts))
            {
                int dartNumber = Integer.parseInt(darts);

                if(0<dartNumber  && dartNumber<=5)
                {
                    return dartNumber;
                }
                else
                {
                    System.out.println("Invalid input,You can only have 1 to 5 darts");
                }
            }
            else
            {
                System.out.println("Invalid input,You can only have 1 to 5 darts");
            }
        }
    }

    public boolean isSmall(String name){
        Pattern pattern = Pattern.compile("[a-z]*");
        return pattern.matcher(name).matches();
    }

    public boolean isDigits(String darts){
        Pattern pattern = Pattern.compile("[0-9]*");
        return pattern.matcher(darts).matches();
    }


    public void playDartGame() {


    }

    public void calculateScore(int score,String identity) {
        DartGame game4 = new DartGame();
        if(identity.equalsIgnoreCase("player"))
        {
            int totalPlayerScore = game4.getPlayerScore()+score;
            game4.setPlayerScore(totalPlayerScore);
        }
        else if(identity.equalsIgnoreCase("vader"))
        {
            int totalVaderScore = game4.getDartScore()+score;
            game4.setDartScore(totalVaderScore);
        }

    }

    public void displayResultOfDartThrow(int dartNumber, int score) {
        System.out.println("Dart " + dartNumber + " - Score: " + score);
    }

    public void displayGameResult() {
        System.out.println("the Result of the Game = ");
    }

    public boolean playGame()
    {
        Scanner scanner = new Scanner(System.in);
        Random random = new Random();
        DartGame game5 = new DartGame();
        int dartsThrown = 1;

        while (true && dartsThrown<6) {
            // human player's turn
            System.out.println("Your turn to throw. Type 'quit' to abandon the game.");
            String input = scanner.nextLine();
            if (input.equalsIgnoreCase("quit"))
            {
                System.out.println("You abandoned the game.");
                return false;
            }

            double playerBoard = random.nextDouble();
            if (playerBoard < Math.PI / 4) {
                // dart lands on the board
                dartsThrown++;
                double playerThrow = random.nextDouble();
                if (playerThrow < 0.04) {
                    // dart lands in black area
                    System.out.println("You got 5 points!");
                    game5.calculateScore(5,"player");
                    System.out.println("your current total score = " + game5.getPlayerScore());
                } else if (playerThrow < 0.16) {
                    // dart lands in yellow area
                    System.out.println("You got 2 points!");
                    game5.calculateScore(2,"player");

                    System.out.println("your current total score = " + game5.getPlayerScore());
                } else {
                    // dart lands in blue area
                    System.out.println("You got 1 point!");
                    game5.calculateScore(1,"player");
                    System.out.println("your current total score = " + game5.getPlayerScore());
                }
            } else {
                // dart misses the board
                dartsThrown++;
                System.out.println("You missed the board. Zero points scored.");
                System.out.println("your current total score = " + game5.getPlayerScore());
            }

            // Dart Vader's turn
            if (random.nextDouble() < 0.05) {
                // Dart Vader abandons the game
                System.out.println("Dart Vader abandoned the game.");
                break;
            }

            double VaderBoard = random.nextDouble();
            if (VaderBoard < Math.PI / 4) {
                // dart lands on the board

                double VaderThrow= random.nextDouble();
                if (VaderThrow < 0.04) {
                    // dart lands in black area
                    System.out.println("Dart Vader got 5 points.");
                    game5.calculateScore(5,"vader");
                    System.out.println("Dart Vader's current total score = " + game5.getDartScore());
                } else if (VaderThrow < 0.16) {
                    // dart lands in yellow area
                    System.out.println("Dart Vader got 2 points.");
                    game5.calculateScore(2,"vader");
                    System.out.println("Dart Vader's current total score = " + game5.getDartScore());
                } else {
                    // dart lands in blue area
                    System.out.println("Dart Vader got 1 point.");
                    game5.calculateScore(1,"vader");
                    System.out.println("Dart Vader's current total score = " + game5.getDartScore());
                }
            } else {
                // dart misses the board
                System.out.println("Dart Vader missed the board. Zero points scored.");
                System.out.println("Dart Vader's current total score = " + game5.getDartScore());
            }
        }

        System.out.println("Game over!");
        System.out.println("Your score: " + game5.getPlayerScore());
        System.out.println("Dart Vader's score: " + game5.getDartScore());
        return true;
    }

}

请问,为什么我字段必须要加static静态字段啊,我后面 new对象使用 get ,set应该不用加静态字段啊。谢谢!!

  • 写回答

4条回答 默认 最新

  • 瞬间的未来式 2023-04-06 11:36
    关注

    不是必须的吧,得看你的需求

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月6日
  • 修改了问题 4月6日
  • 创建了问题 4月6日

悬赏问题

  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音