Java" VariableDeclaratorId在此令牌之后预期"

时间:2014-03-24 23:29:24

标签: java class

我正在开展一个有趣的小项目,这本质上是一个小型的战斗模拟器。我试图在C ++中使用类似于struct的类,就像使用它来创建一个对象(在这种情况下,一个字符或"实体",因为该类被调用)。我试图从主函数调用所述类中的任何整数时,我在标题中得到错误。

class entity{
    public int health;
    public int accuracy;
    public int power;
    public int defense;
}

public class Tutorial {
    static Random rnd = new Random();
    entity player;
    player.health = 100;  // Issue on the health part
    player.accuracy = 19; // Issue on the accuracy part
    player.power = 15;    // Issue on the power part
    player.defense = 18;  // I think you get it by now...

我一直在寻找一些解释,但我找不到解释错误的性质以及可能的解决方案。如果我能得到那些,那就太棒了。

3 个答案:

答案 0 :(得分:3)

编译器期望在行

上进行变量声明
player.health = 100; 

但是找到了一个任务。陈述

Entity player = new Entity();
player.health = 100; 
player.accuracy = 19; 
player.power = 15; 
player.defense = 18; 

应该在代码块中,例如方法或构造函数,而不是类块

答案 1 :(得分:1)

Procedural code cannot be written directly in a class definition.代码导致语法错误,因为这样做不合法。

相反,请将代码放在适当的方法initialization block中。 (我认为初始化块在这里是合适的,所以我很容易显示一个"工厂方法"。)

因此,请考虑像

这样的方法
// This is a member variable declaration, which is why it's OK
// to have a (static) method call provide the value.
// Alternatively, player could also be initialized in the constructor.
Entity player = makeMeAPlayer();

static Entity makeMeAPlayer() {
    // Create and return entity; the code is inside a method
    Entity player = new Entity();
    player.health = 100;
    // etc.
    return player;
}

(我还清理了类型以匹配Java命名约定 - 关注套件!)

答案 2 :(得分:0)

这是遭受VariableDeclaratorId高度准确但又不可怕的直观消息传递的另一种方法。

 @PostMapping("/showCompany")
    public String processForm(@ModelAttribute("company") CompaniesDAO company, company_name, company_function) {

会产生:

Syntax error, insert "... VariableDeclaratorId" to complete FormalParameter

这告诉您需要像String或int这样的变量类型...

 @PostMapping("/showCompany")
    public String processForm(@ModelAttribute("company") CompaniesDAO company, String company_name, String company_function) {

事实证明VariableDeclaratorId是一个类

public class VariableDeclaratorId
extends Expression
implements prettyprint.PrettyPrintable

如果您将类描述与错误消息一起使用来阅读,以致您忘记定义变量类型,那将给我留下深刻的印象。我只是做出了有根据的猜测。