【问题标题】:Why does declaring an integer Static cause an error in my code?为什么声明整数静态会导致我的代码出错?
【发布时间】:2018-10-19 23:15:18
【问题描述】:

我正在使用来自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; 行抛出

不是声明

使用小写“s”(static) 会抛出

表达式的非法开始

如果我删除Static,它会起作用。我不知道这是否会对代码产生重大影响。使用小写的“s”也不起作用,大写的Static是来自有代码的网站,所以我不知道他们为什么用大写的S写。

【问题讨论】:

标签: java static variable-declaration


【解决方案1】:

您的代码中有一个普遍错误和一个非法字段声明:

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

  2. 非法字段声明:我在你的HighscoreManager.classs getHighscoreString() 方法中删除了int max = 10; 中的static 关键字后编译和执行的代码完美。

除了HighscoreManager.class,我还使用了website you referenced中的Main.classScore.classScoreComparator.class,没有改变。

为什么会这样?

您不能在方法中声明静态字段。默认情况下是不允许的。

你可以阅读this post的主题。

输出是:

1.  Marge       300
2.  Lisa        270
3.  Bart        240
4.  Maggie      220
5.  Homer       100

【讨论】:

  • 虽然如此,但这不是核心问题。
  • 虽然是真的,但它可以解决 OP 引用的错误,但是是的,它不是 :)
  • @BlkPengu 它仍然不适用于小写 s。我已经尝试过了,但它给了我“非法的表达开始”。我删除了静态,只留下了 int max = 10;并且有效,但我不知道这是否会影响代码作者在使用“静态”编写代码时想要的内容
  • @on1222 你能上传 Score.class 吗?你让我对我的回答感到难过。我会尝试调试你的代码
  • @BlkPengu 我使用了这个网站的代码:forum.codecall.net/topic/… & 谢谢你的帮助!!即使我直接复制了他们发布的内容,HighscoreManager 还是给了我错误
【解决方案2】:

not a statement 因为静态在 java 中什么都不是,但它是 static

此外,您不能在每次调用函数时生成static 变量,而是直接在类中声明。这是因为它不使用该类的对象进行实例化,而是最初附加到类并通过一个点表示法访问。(取决于它是否是私有的)。

【讨论】:

  • 输入Static不是这里的核心问题。
  • @lexicore 核心问题你怎么看.. 为什么不在这里清除..
  • 其他cmets中已经说明了——不能在方法体中声明静态字段。
猜你喜欢
  • 2018-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
相关资源
最近更新 更多