java - 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;
}
解决方案
这段代码有很多问题。首先你不能使用这个:
gScore.getUserName = sc.next();
getUserName是方法,而不是属性。如果你想设置这个值,你应该通过 setter 来完成。像这样的东西:
gScore.setUserName(sc.next());
或者你可以像这样设置这个值:(注意这要求非私人访问)
gScore.username = sc.next();
更重要的是 - 你永远不会初始化这个对象 gScore。在尝试设置它的值之前,您必须这样做。您当前的构造可能不是最佳解决方案。删除它并使用默认值:
GameScore gScore = new GameScore();
然后您可以通过 setter 方法设置所有值。
希望它有点帮助
推荐阅读
- angular - 如何使用 Angular 8 在不同浏览器上的同一网页之间同步数据
- vitess - 我们可以分片特定的表而不在 vitess 中创建新的键空间吗?
- php - Laravel 不会捕获 \Exception、\Throwable,也不会捕获任何东西
- c# - 等到类从 div 中删除
- c# - 如何使用asp.net c#拆分字符串数据并推送到具有特定格式的数据表?
- android - Bottomsheet 显示在 RecyclerView - 如何确保单击的项目显示在 RecyclerView
- sql - 将查询转换为 Eloquent
- python - 如何在pandas DataFrame的值列中找到顺序(数字|增加|减少)的最高计数
- c# - 在 C# 中调用 COM+ 对象事件处理程序
- python - 如何通过python从https://online.aia.edu.au/登录下载csv文件