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应该不用加静态字段啊。谢谢!!

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

该回答通过自己思路及baidu搜索,得到内容具体如下:

在Java中,静态字段是属于类的,而非属于类的实例对象。这意味着,在没有创建类的实例对象时,静态字段就已经存在,可以直接使用。

对于非静态字段,需要先创建类的实例对象,然后通过该实例对象才能访问和使用它们。

因此,如果你想在没有创建类的实例对象时就能够访问和使用字段,就需要将字段定义为静态的。

在你的代码中,如果你想在类的构造方法中使用非静态字段,需要先创建类的实例对象,然后通过该实例对象才能访问和使用它们。例如,可以在构造方法中使用以下代码来设置非静态字段的值:

public DartGame() {
    this.dartsNumber = 0;
    this.player = new Player();
}

在使用类的实例对象调用getset方法时,也不需要使用静态字段。例如,可以使用以下代码来设置playerScore的值:

DartGame game = new DartGame();
game.setPlayerScore(10);

注意,静态字段与非静态字段的作用域和生命周期不同,需要根据具体的需求和设计来选择使用哪种类型的字段。

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

get set 写在哪里 代码贴全

你哪句代码出错就贴哪句代码,不要贴不出错的代码出来
最好是把代码贴全
不要玩你猜我猜的游戏