首页 > 解决方案 > Java数据类(多文件管理)

问题描述

对于我目前正在处理的任务,我遇到了一堵带有数据类的砖墙,并使用第二个 .java 文件从中获取类名并输入数据和值。

我尝试在构造函数名称和 getter + setter 之上使用设置为私有的原始 String 和 int 名称。

我试图将数据输入到的主文件:

public class HighScores {

    /*
     * Method for all content related to reading the gamescore.java file
     */
    public static void readGameScore(Scanner in) {
        GameScore gScore;

        System.out.println("Please Enter your Username");
        gScore.getUserName = sc.next();        
        }

辅助(数据类文件)我正在尝试获取设置值

public class GameScore {
    //Variable Declarations
    private String Username; // The users' Username/nickname
    private int gameId;      // The ID of the game
    private int score;       // The users score
    private String title;    //Title, dependant on the score

    //Constructor (initialise variable values)
    public GameScore(String userName, int gID, int scoreValue, String scoreTitle) {
        Username = userName;
        //gameId = gID;
        //score = scoreValue;
        //title = scoreTitle;
    }

    /* Getters and Setters */

    //Username Getter + Setter
    public String getUsername() {
        return Username;
    }

    public void setUsername (String userName) {
        Username = userName;
    }

标签: java

解决方案


这段代码有很多问题。首先你不能使用这个:

gScore.getUserName = sc.next(); 

getUserName是方法,而不是属性。如果你想设置这个值,你应该通过 setter 来完成。像这样的东西:

gScore.setUserName(sc.next());

或者你可以像这样设置这个值:(注意这要求非私人访问)

gScore.username = sc.next();

更重要的是 - 你永远不会初始化这个对象 gScore。在尝试设置它的值之前,您必须这样做。您当前的构造可能不是最佳解决方案。删除它并使用默认值:

GameScore gScore = new GameScore();

然后您可以通过 setter 方法设置所有值。

希望它有点帮助


推荐阅读