java表达式的非法启动

java表达式的非法启动,java,compiler-construction,Java,Compiler Construction,我知道这对某些人来说非常简单,我不明白为什么编译器会抱怨这一点。我一直在寻找一些答案,我能找到的只是一个括号问题,但我不认为这是我的问题。我是Java新手,所以任何帮助都会很棒。这是应该是一个基本累加器程序的代码 public class BasicAccumulator implements Accumulator { { private int digit; private int value; } public int basicAccumulator(in

我知道这对某些人来说非常简单,我不明白为什么编译器会抱怨这一点。我一直在寻找一些答案,我能找到的只是一个括号问题,但我不认为这是我的问题。我是Java新手,所以任何帮助都会很棒。这是应该是一个基本累加器程序的代码

public class BasicAccumulator implements Accumulator {
  {
    private int digit;
    private int value;

  }

  public int basicAccumulator(int digit, int value)
  {
    digit = 0;
    value = 0;
  }

  public void addDigit(int digit);
  {
    digit = digit + value;
  }

  public void plus();
  {
    value = digit + digit;
  }

  public void minus();
  {
    value = digit - digit;
  }

  public void clear();
  {
    value = 0;
  }

  public int displayValue();
  {
    return value;
  }

}
去掉分号。应该是:

public void plus()
{ ...
}
public void plus();
public void minus();
public void clear();
public int displayValue();
同样适用于
displayValue()
、减号()、清除()。应该是:

public void plus()
{ ...
}
public void plus();
public void minus();
public void clear();
public int displayValue();
代码中的上述行是错误。

public void plus();
{
    value = digit + digit;
}
就这样吧

public void plus()
{
    value = digit + digit;
}

对其余的方法执行此操作。…

在函数addDigit、plus、减号、clear和下面两个签名之后,这些分号在做什么?移除它们。这将完成任务

您发布的代码有三个问题

  • 在你所有的方法之后,你有分号。只有当您有一个抽象方法(在抽象类或接口中声明
    abstract
    )时,才可以使用它
  • 看起来您试图在初始值设定项块中创建
    数字
    。拆下它们周围的支架
  • 构造函数不返回值,因此返回类型从不包含在其签名中。您有
    public-int-basicacumulator
    ,但它应该是
    public-basicacumulator
    。另外,注意区分大小写
  • 这是您的固定代码:

    public class BasicAccumulator implements Accumulator {
    
        private int digit;
        private int value;
    
        public BasicAccumulator(int digit, int value) {
            digit = 0;
            value = 0;
        }
    
        public void addDigit(int digit) {
            digit = digit + value;
        }
    
        public void plus() {
            value = digit + digit;
        }
    
        public void minus() {
            value = digit - digit;
        }
    
        public void clear() {
            value = 0;
        }
    
        public int displayValue() {
            return value;
        }
    }
    

    我将直接在您的代码中发布我的评论:

    public class BasicAccumulator implements Accumulator {
    
        //I'd delete this brackets and leave just the private declarations initialized
        //in zero.
        {
            private int digit;
            private int value;    
        }
    
        //I'm making this an initializing constructor by using the parameters
        //it defines. If you want both digit and value to be set to 0 (or any other value
        //by default) you can make a no argument constructor and invoke it.
        public BasicAccumulator(int digit, int value)
        {
            this.digit = digit;
            this.value = value;
        }
    
        public void addDigit(int digit); //This semicolon is wrong. Delete it.
        {
            digit = digit + value;
        }
    
        public void plus(); //This semicolon is wrong. Delete it.
        {
            value = digit + digit;
        }
    
        public void minus(); //This semicolon is wrong. Delete it.
        {
            value = digit - digit;
        }
    
        public void clear(); //This semicolon is wrong. Delete it.
        {
            value = 0;
        }
    
        public int displayValue(); //This semicolon is wrong. Delete it.
        {
            return value;
        }
    
    }
    

    我不知道这是一个例子还是什么,但是逻辑也有一些问题,但是我将把这些问题留给你(特别是
    减号
    方法,因为它总是将值设置为0)。

    它说在第8行和第9行有一个错误,“表达式的非法开始”两个int字段周围的括号的意图是什么,数字和值?这在这类语言中是一种常见的新手错误。我+1谢谢你的提问,尽管显然有人不同意并投了反对票。在这种情况下,任何有经验的程序员都会立即识别错误,但新手可能会花费大量时间忽略它。问和学比不问和默默忍受要好得多。谢谢大家,我很感激@EricSage:如果答案对你有帮助,别忘了点击答案旁边的勾号来接受它。所以我删除了这些,它仍然会吐出同样的错误。有什么想法吗?你在用IDE吗?您保存更改了吗?发布准确的消息。如果您没有将任何内容返回到
    公共无效基本累积器(int-digit,int-value)
    ,您还需要更改
    公共基本累积器(int-digit,int-value)
    ,但我真正的猜测是,您的意思是它是一个构造函数,所以它应该是
    公共基本累积器(int-digit,int-value)