标记“{”上的语法错误,{ 应在此标记 [关闭] 之后

Syntax error on token "{", { expected after this token [closed]

提问人:UpAdam 提问时间:7/25/2022 最后编辑:UpAdam 更新时间:7/26/2022 访问量:569

问:


这个问题是由错别字或无法再现的问题引起的。虽然类似的问题可能在这里是主题,但这个问题的解决方式不太可能帮助未来的读者。

去年关闭。

这篇文章是去年编辑并提交审核的,但未能重新打开该帖子:

原始关闭原因未解决

我完全不明白这个语法错误,我对 Java 非常了解,我正在尝试按照作业上的说明进行操作,但我不知道是什么阻止了它们工作

import java.util.Scanner;

public class Point {
   private double xCoord;
   private double yCoord;

   public double getxCoord(){ //accessors
      return xCoord;
   }
   public double getyCoord(){
      return yCoord;
   }
   Point defaultConstructor = new Point(){  // (the error is one this line) default constructor - I have to make a point object in the Main with this
      xCoord = 0;                         
      yCoord = 0;
      System.out.println("Testing default constructor");
   }
   Point twoArgConstructor = new Point( 3.2, 4.5){ // (the error is one this line) two-argument constructor
      xCoord = 3.2;
      yCoord = 4.5;
      System.out.println("Testing two-argument constructor");
   }

   public String toString (){
      System.out.println("("+xCoord+", "+yCoord+")");   
   }

   public void defaultConstructor() {
   }

   public void twoArgConstructor() {
   }

}

如果有帮助,这是主类

import java.util.Scanner;

public class FrazierLab9{
    public static void main(String args[]){
        Point point1 = new Point();
        Point point2 = new Point();

        point1.defaultConstructor();
        point1.toString();
        point2.twoArgConstructor();
        point2.toString();
    }
}
Java 语法错误

评论

1赞 ewokx 7/25/2022
欢迎使用 Stack Overflow。 缺少关闭getxCoord()
1赞 Jon Skeet 7/25/2022
将 的声明与 的声明进行比较。参数列表末尾缺少 a。getxCoordgetyCoord)
0赞 Jon Skeet 7/25/2022
此外,一旦你修复了语法错误,你就会遇到一个问题,即 和 是字段(这将导致堆栈溢出),但你调用它们就好像它们是 中的方法一样。我怀疑您打算将它们作为方法,理想情况下不要在实现中使用匿名类......defaultConstructortwoArgConstructormain

答:

0赞 Yiannis Dermitzakis 7/25/2022 #1

声明 getxCoord 方法时忘记用括号括起来

public double getxCoord({ //accessors
  return xCoord;
}

即使您不使用 IDE,编译器也应该为您提供有关问题的更多信息。对于上面的代码,执行

javac Point.java

我得到了

Point.java:7: error: illegal start of type
public double getxCoord({ //accessors
                        ^
Point.java:7: error: ')' expected
public double getxCoord({ //accessors
                         ^
...

这表明在第 7 行开始检测到错误。


OP编辑后

这些不是构造函数。您需要在 Point 类中定义构造函数,然后使用 或在其他地方(例如在主类中)从 Point 构造 Point 对象。然后,可以从对象中调用所需的任何方法。Point p = new Point()Point p = new Point(3.4,5.6)

public Point(){
  this.xCoord = 0;                         
  this.yCoord = 0;
  System.out.println("Testing default constructor");
}
public Point(double x, double y){ 
  this.xCoord = x;
  this.yCoord = y;
  System.out.println("Testing two-argument constructor");
}

...

评论

0赞 UpAdam 7/26/2022
我的错,我想我打错了什么的。但是我的 getxCoord 有闭括号。我的问题是构造函数 + 第 33 行的最后一个括号上也有一个红色(显示 4 个语法错误 - 语法错误,插入“;”以完成 FieldDeclaration,语法错误,插入“}”以完成 ClassBody,语法错误,插入“;”以完成 FieldDeclaration,语法错误,插入“}”以完成 ClassBody)
0赞 Yiannis Dermitzakis 7/26/2022
您的编辑完全改变了问题。您首先需要了解什么是构造函数,这些构造函数*..构造不是有效的 Java 代码。