如何修复“java:找不到符号”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何修复“java:找不到符号”相关的知识,希望对你有一定的参考价值。
我正在使用JB IntelliJ IDEA并尝试创建一个对Rectangles进行排序的程序。但我无法解决
"Error:(28, 22) java: cannot find symbol
symbol: method Rectangle(java.lang.Double,java.lang.Double)
location: class io.github.vadimsam.rectsort.Rectangle".
我该怎么办?
NB:项目的重建并没有帮助我。
主要:
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Scanner;
class SComparator implements Comparator<Rectangle> {
public int compare(Rectangle r1, Rectangle r2) {
return r1.area().compareTo(r2.area());
}
}
public class Main {
public static void main(String[] args) {
ArrayList<Rectangle> rectsArea = new ArrayList<>();
Scanner input = new Scanner(System.in);
SComparator comparator = new SComparator();
while(true){
System.out.print("A = ");
Double a = input.nextDouble();
System.out.print("B = ");
Double b = input.nextDouble();
Rectangle.Rectangle(a,b);
rectsArea.sort(comparator);
if (a == 0) {
System.out.println("Sorted ArrayList:");
System.out.println(rectsArea);
break;
}
}
}
}
长方形:
public class Rectangle {
public Double c, d;
public Rectangle(Double c, Double d) {
this.c = c;
this.d = d;
}
Double area() {
return c * d;
}
}
它应该返回已排序的ArrayList
而不是写:
Rectangle.Rectangle(a,b);
调用名为Rectangle
的静态方法(可能是Rectangle
类的一部分),尝试使用在Rectangle
类中声明的构造函数创建一个对象,以实例化新的矩形对象:
Rectangle rectangle = new Rectangle(a, b);
您还没有在Rectangle
类中声明任何名为Rectangle
的静态方法,这就是出现此错误的原因。
这一行:
Rectangle.Rectangle(a,b);
表示对类Rectangle
定义的名为Rectangle
的静态方法的调用。没有这样的方法!这就是“找不到符号错误”的原因。
有一个构造函数Rectangle(int, int)
但你没有在Java中调用构造函数。你new
它。例如:
Rectangle someRectangle = new Rectangle(a,b);
但是,根据上下文判断,我怀疑您应该将新的Rectangle
对象分配给您之前创建的数组的元素。
但你的代码是(我怎么说这个)“困惑”。我认为你需要仔细阅读并向你的rubber duck解释每个陈述的作用。
我认为你的问题就在于此
Rectangle.Rectangle(a,b);
这是用于实例化对象的不正确语法,因为在矩形类中没有方法Rectangle
,只有构造函数。使用构造函数的正确方法如下:
Rectangle rect = new Rectangle(a, b);
以上是关于如何修复“java:找不到符号”的主要内容,如果未能解决你的问题,请参考以下文章
IntelliJ IDEA - Lombok 报错 Java: 找不到符号
IDEA 编译报错之 Error:{xx,xx)java:找不到符号 符号:方法XXX 位置:类型为XXX
IDEA 编译报错之 Error:{xx,xx)java:找不到符号 符号:方法XXX 位置:类型为XXX