我使用Making a simple high-score system - Codecall中的代码,但在使用时收到错误。导致问题的行在HighScoreManager()
类中。
这是错误的代码:
public String getHighscoreString() {
String highscoreString = "";
Static int max = 10; // this line gives an error
ArrayList<Score> scores;
scores = getScores();
int i = 0;
int x = scores.size();
if (x > max) {
x = max;
}
while (i < x) {
highscoreString += (i + 1) + ".\t" + scores.get(i).getNaam() + "\t\t" + scores.get(i).getScore() + "\n";
i++;
}
return highscoreString;
}
第Static int max = 10;
行抛出
不是声明
使用小写&#34; s&#34; (static
)抛出
非法开始表达
如果我删除Static
它可以正常工作。我不知道天气会对代码产生很大影响。使用小写&#34; s&#34;也不起作用,大写Static
是来自拥有代码的网站的内容,所以我不知道他们为什么用大写的S编写它。
答案 0 :(得分:6)
您的代码中存在一个常见错误和一个非法字段声明:
首先,通常是:它总是static
,而不是Static
。 static
应该是小写的。 Java不会将其识别为关键字。您可以阅读case sensitivity in java here。
非法字段声明:在我static
int max = 10;
方法中HighscoreManager.class
删除getHighscoreString()
关键字后,代码编译完毕。< / p>
除HighscoreManager.class
之外,我使用website you referenced中的Main.class
和Score.class
以及ScoreComparator.class
,未更改。
为什么会这样?
您无法在方法中声明字段静态。默认情况下不允许这样做。
您可以阅读有关该主题的this post。
输出结果为:
1. Marge 300
2. Lisa 270
3. Bart 240
4. Maggie 220
5. Homer 100
答案 1 :(得分:2)
not a statement
因为静态在java中没什么,但它是static
。
此外,您无法在每次调用函数时生成static
变量,但它会直接在类中声明。这是因为它没有实例化该类的对象,但最初附加了类,并且可以通过一个点符号访问。(取决于它是否为私有)。