为什么声明一个整数Static会导致我的代码出错?

时间:2018-05-09 18:41:39

标签: java static variable-declaration

我使用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编写它。

2 个答案:

答案 0 :(得分:6)

您的代码中存在一个常见错误和一个非法字段声明:

  1. 首先,通常是:它总是static,而不是Staticstatic应该是小写的。 Java不会将其识别为关键字。您可以阅读case sensitivity in java here

  2. 非法字段声明:在我static int max = 10;方法中HighscoreManager.class删除getHighscoreString()关键字后,代码编译完毕。< / p>

  3. HighscoreManager.class之外,我使用website you referenced中的Main.classScore.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变量,但它会直接在类中声明。这是因为它没有实例化该类的对象,但最初附加了类,并且可以通过一个点符号访问。(取决于它是否为私有)。