Java 区域计算代码在方法名和默认构造函数之间需要分号?

Java 区域计算代码在方法名和默认构造函数之间需要分号?,java,notepad++,java.util.scanner,Java,Notepad++,Java.util.scanner,我编写了一个代码,可以接受用户输入,并根据输入的尺寸计算三角形、圆形或矩形的面积。代码在方法中出现了3个错误,即在方法名和方法名后面的()之间应该有一个分号。这不是一篇“做我的家庭作业”的帖子,但我真的找到了我能找到的所有资源,真的需要一些帮助,知道如何做。代码如下,返回错误的区域以大写字母表示 import java.util.Scanner; public class areacalculatorNLW { private double rektlength; private doub

我编写了一个代码,可以接受用户输入,并根据输入的尺寸计算三角形、圆形或矩形的面积。代码在方法中出现了3个错误,即在方法名和方法名后面的()之间应该有一个分号。这不是一篇“做我的家庭作业”的帖子,但我真的找到了我能找到的所有资源,真的需要一些帮助,知道如何做。代码如下,返回错误的区域以大写字母表示

import java.util.Scanner; 

public class areacalculatorNLW
{ 
private double rektlength;
private double rektwidth;
{
    double GETREKT(){
        System.out.println("Enter the length: ");
        rektlength = scan.next();
        System.out.println("Enter the width: ");
        rektwidth = scan.next();
        double rektarea = rektlength * rektwidth;
        System.out.println(rektarea);
    }
}
private double radius;
{
    double GETCIRCLE(){
        System.out.println("Enter the radius of the circle. ");
        radius = scan.next();
        double circlearea = (radius * Math.PI) * (radius * Math.PI);
        System.out.println(circlearea);
    }
}
private double trianglelength;
private double trianglewidth;
{
    double GETTRIANGLE(){
        System.out.println("Enter the triangle length: ");
        trianglelength = scan.next();
        System.out.println("Enter the triangle width: ");
        trianglewidth = scan.next();
        trianglearea = (trianglelength * trianglewidth) / 2;
        System.out.println(trianglearea);
    }
}


public static void main(String[] args) 
{ 

    Scanner scan = new Scanner(System.in);

    System.out.println("Hello, what would you like to calculate?");
    System.out.println("Type 1 to calculate the area of a rectangle.");
    System.out.println("Type 2 to calculate the area of a circle.");
    System.out.println("Type 3 to calculate the area of a triangle.");
    System.out.println("Type 4 to exit the program.");

    int choice;
    choice = scan.nextInt();

    if(choice == 1){
        this.getrekt();
    }

    if (choice == 2){
        this.getcirlce();
    }
    if (choice == 3){
        this.gettriangle();
    }

}
}

不能在静态方法中使用
this
,因为它引用的是当前实例,而静态方法中不存在该实例

必须创建类的实例才能调用非静态方法:

areacalculatorNLW calc = new areacalculatorNLW ();
然后调用该实例的方法。例如:

calc.GETREKT();
此外,您还应该学习Java命名约定


编辑:如其他评论/答案中所述,您的方法周围还有额外的大括号,应该删除。

删除额外的括号:

{
    double GETREKT(){
        System.out.println("Enter the length: ");
        rektlength = scan.next();
        System.out.println("Enter the width: ");
        rektwidth = scan.next();
        double rektarea = rektlength * rektwidth;
        System.out.println(rektarea);
    }
}
对此

    double GETREKT(){
        System.out.println("Enter the length: ");
        rektlength = scan.next();
        System.out.println("Enter the width: ");
        rektwidth = scan.next();
        double rektarea = rektlength * rektwidth;
        System.out.println(rektarea);
    }

您已经放置了额外的花括号,标记如上。整个方法不需要这些;只有方法正文。

显示的代码有很多错误

使用像Eclipse这样的IDE会立即告诉您出了什么问题

一个基本的语法错误:您的方法周围有一个(额外的){},这是一个错误。Java中的方法类似于

public void foo() {}
而你写的

{ public void foo() {} }
理解中的一个基本错误:您的主要方法是静态方法。但是,您的其他方法不是静态的。但是,在main方法中没有类的实例,因此不能调用

this.
您可以通过使用创建实例来修复此问题

public static void main(String[] args) { 
  Scanner scan = new Scanner(System.in);
  areacalculatorNLW myInstance = new areacalculatorNLW();
  myInstance.getrekt();
  ...
除此之外,您正在使用一个变量trianglearea,您没有定义该变量,并且主方法中的扫描变量在其他方法中不可见


我强烈建议你找其他人一起做结对编程。您应该提高对Java基本概念的了解,否则这将需要很长时间才能正确完成。

您的代码中存在许多问题:

  • 方法声明为返回值,但没有返回语句,请将返回值更改为void
  • scan.next()返回字符串。为了将其解析为Double,请使用Double.valueOf方法
  • 不能在静态范围内使用此选项。为了使用“this”,您必须拥有对象的实例,但是静态方法附加到类而不是实例,因此您可以在主方法内创建实例并使用它
  • 名称区分大小写-不能将方法命名为FOO,以后再调用它
  • 命名约定:类应以大写字母开头,方法和变量应以驼峰大小写命名,并以小写字母开头(例如myMethod而不是myMethod)
  • 当您声明一个类时,将字段和方法聚集在一起更容易接受
  • 您还忘记声明TriangalLearea变量
  • 以下是修复这些问题后的代码,请尝试了解更改(为了使用此代码,您还必须更改文件名以匹配类名:

    import java.util.Scanner;
    
    public class AreaCalculator {
        private double trianglearea;
        private double rektlength;
        private double rektwidth;
        private double trianglelength;
        private double trianglewidth;
    
        void getRect(Scanner scan) {
            System.out.println("Enter the length: ");
            rektlength = Double.valueOf(scan.next());
            System.out.println("Enter the width: ");
            rektwidth = Double.valueOf(scan.next());
            double rektarea = rektlength * rektwidth;
            System.out.println(rektarea);
        }
    
        private double radius;
    
        void getCircle(Scanner scan) {
            System.out.println("Enter the radius of the circle. ");
            radius = Double.valueOf(scan.next());
            double circlearea = (radius * Math.PI) * (radius * Math.PI);
            System.out.println(circlearea);
        }
    
        void getTriangle(Scanner scan) {
            System.out.println("Enter the triangle length: ");
            trianglelength = Double.valueOf(scan.next());
            System.out.println("Enter the triangle width: ");
            trianglewidth = Double.valueOf(scan.next());
            trianglearea = (trianglelength * trianglewidth) / 2;
            System.out.println(trianglearea);
        }
    
        public static void main(String[] args) {
    
            Scanner scan = new Scanner(System.in);
    
            System.out.println("Hello, what would you like to calculate?");
            System.out.println("Type 1 to calculate the area of a rectangle.");
            System.out.println("Type 2 to calculate the area of a circle.");
            System.out.println("Type 3 to calculate the area of a triangle.");
            System.out.println("Type 4 to exit the program.");
    
            int choice;
            choice = scan.nextInt();
    
            AreaCalculator AreaCalculator = new AreaCalculator();
    
            if (choice == 1) {
                AreaCalculator.getRect(scan);
            }
    
            if (choice == 2) {
                AreaCalculator.getCircle(scan);
            }
            if (choice == 3) {
                AreaCalculator.getTriangle(scan);
            }
    
        }
    }
    

    我不认为这个错误是因为这个关键字。那是因为额外的括号。还是我错了?
    import java.util.Scanner;
    
    public class AreaCalculator {
        private double trianglearea;
        private double rektlength;
        private double rektwidth;
        private double trianglelength;
        private double trianglewidth;
    
        void getRect(Scanner scan) {
            System.out.println("Enter the length: ");
            rektlength = Double.valueOf(scan.next());
            System.out.println("Enter the width: ");
            rektwidth = Double.valueOf(scan.next());
            double rektarea = rektlength * rektwidth;
            System.out.println(rektarea);
        }
    
        private double radius;
    
        void getCircle(Scanner scan) {
            System.out.println("Enter the radius of the circle. ");
            radius = Double.valueOf(scan.next());
            double circlearea = (radius * Math.PI) * (radius * Math.PI);
            System.out.println(circlearea);
        }
    
        void getTriangle(Scanner scan) {
            System.out.println("Enter the triangle length: ");
            trianglelength = Double.valueOf(scan.next());
            System.out.println("Enter the triangle width: ");
            trianglewidth = Double.valueOf(scan.next());
            trianglearea = (trianglelength * trianglewidth) / 2;
            System.out.println(trianglearea);
        }
    
        public static void main(String[] args) {
    
            Scanner scan = new Scanner(System.in);
    
            System.out.println("Hello, what would you like to calculate?");
            System.out.println("Type 1 to calculate the area of a rectangle.");
            System.out.println("Type 2 to calculate the area of a circle.");
            System.out.println("Type 3 to calculate the area of a triangle.");
            System.out.println("Type 4 to exit the program.");
    
            int choice;
            choice = scan.nextInt();
    
            AreaCalculator AreaCalculator = new AreaCalculator();
    
            if (choice == 1) {
                AreaCalculator.getRect(scan);
            }
    
            if (choice == 2) {
                AreaCalculator.getCircle(scan);
            }
            if (choice == 3) {
                AreaCalculator.getTriangle(scan);
            }
    
        }
    }