[英]Am using Gson with freemarker template. When i try to check an array object as null then am getting error
[英]Why am I getting an error when I try to create the Scoreboard object with an array?
import java.io.*;
public class SaveAndLoad
{
private Scoreboard[] scoreboard = new Scoreboard[5];
//constructor
public SaveAndLoad(Scoreboard[] scoreboard)
{
this.scoreboard = scoreboard;
}
public static void save() throws FileNotFoundException
{
// 1. Create 5 GameScores
// 2. Put 5 GameScores into a gamescore[]
// 3. Create a Scoreboard using a gamescore[]
//Create 5 instances of the Game Class
GameScore player1 = new GameScore("Rebekah", 199);
GameScore player2 = new GameScore("Allen", 195);
GameScore player3 = new GameScore("Sami", 198);
GameScore player4 = new GameScore("Megan", 142);
GameScore player5 = new GameScore("Vince", 169);
GameScore[] gamescore = new GameScore[5];
gamescore[0] = player1;
gamescore[1] = player2;
gamescore[2] = player3;
gamescore[3] = player4;
gamescore[4] = player5;
//Create an instance of the Scoreboard Class using the GameScore array
Scoreboard scoreboard = new Scoreboard(GameScore[] gamescore);
最后一行给了我一个错误,我不知道为什么,因为这些是 Scoreboard 类的参数。
您正在尝试直接打印数组。 举个例子:
// new Bacon ( #baconId, #height, #width )
Bacon[] baconLand = {
new Bacon("001", 1, 1),
new Bacon("002", 1, 1),
new Bacon("003", 1, 1)
};
System.out.println(baconLand);
这个打印语句的结果是:[LBacon;@6f75e721
通常我们必须使用Arrays.toString(Object[] a)
来打印一个数组。 但是,除非您覆盖toString()
方法,否则仅使用Arrays.toString(Object[] a)
在您的情况下不起作用。
例如,如果我在不覆盖toString()
方法的情况下执行此操作:
System.out.println(Arrays.toString(baconLand));
我会得到这个结果:[Bacon@6f75e721, Bacon@69222c14, Bacon@606d8acf]
为了显示一些有意义的东西,我可以覆盖 toString() 方法,以便它返回 baconId:
@Override
public String toString() {
return this.baconId;
}
这个方法在 Bacon 类中被覆盖(在我的例子中)。
System.out.println(Arrays.toString(baconLand));
上面的行现在将打印:[001, 002, 003],这是每个 Bacon 实例的 baconIds。
你也可以参考这篇文章: https : //www.freecodecamp.org/news/java-array-methods-how-to-print-an-array-in-java/
希望这有帮助。
改成:
Scoreboard scoreboard = new Scoreboard(gamescore);
考虑代码:
new GameScore("Vince", 169);
你没有做错
new GameScore(String "Vince", int 169);
所以如你所知,没有必要传递变量类型和值,实际上这样做不仅没有必要而且是错误的。
为了使您的代码更简洁,您可以考虑如下编写代码,消除不必要的变量名称。
GameScore[] gamescore = new GameScore[5];
gamescore[0] = new GameScore("Rebekah", 199);
gamescore[1] = new GameScore("Allen", 195);
gamescore[2] = new GameScore("Sami", 198);
gamescore[3] = new GameScore("Megan", 142);
gamescore[4] = new GameScore("Vince", 169);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.