不能在 Java 代码中引用类



我在为大学讲座编译代码时遇到问题。

有文件测试.java给定,可能无法更改:

package sorting;
import java.util.*;
class Test {
static final int BOUND_RANDOM = 99;
public static void main(String[] args) {
    System.out.print("n = ");
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    Random random = new Random(123);
    Rectangle[] rectangles = new Rectangle[n];
    for (int i = 0; i < rectangles.length; ++i) {
        // 1. Parameter = x-Koordinate linke untere Ecke
        // 2. Parameter = y-Koordinate linke untere Ecke
        // 3. Parameter = Breite
        // 4. Parameter = Hoehe
        rectangles[i] = new Rectangle(random.nextInt( BOUND_RANDOM),
                                      random.nextInt( BOUND_RANDOM),
                                      random.nextInt( BOUND_RANDOM) + 1,
                                      random.nextInt( BOUND_RANDOM) + 1);
    }
    System.out.print("Vor Sortieren:");
    System.out.println(Arrays.toString(rectangles));
    // long start = System.currentTimeMillis();
    SortingAlgos.selectionSort(rectangles);
    // SortingAlgos.insertionSort(rectangles);
    // Arrays.sort(rectangles);
    // long end = System.currentTimeMillis();
    //System.out.println("Benoetigte Zeit: " + (end - start) + " Millisekunden");
    System.out.println("Nach Sortieren:");
    System.out.println(Arrays.toString(rectangles));
}
}

接下来,我写了一个文件,在其中定义了类 Rectangle,保存在同一个文件夹中。我根据 Test 中的调用创建了一个构造函数.java并将文件保存并编译在与 Test 相同的文件夹中.java:

package sorting;
public class Rectangle{
int x,y,width, height;

public Rectangle(int x, int y, int width, int height){
this.x=x;
this.y=y;
this.width=width;
this.height=height;
}

public String toString(){
return "x="+this.x;
}

}

谁能给我一个快速的镜头,我哪里出错了?

PS:问题是我在编译Test时出现错误.java其中类矩形是一个未找到的符号。我在 Linux 和 Win 10 中也遇到了这个错误。

"排序"下的测试类。您的类矩形也应该在包"排序"下

您需要将类放在名为 sorting 的文件夹中。然后再往上一级,然后从那里编译你的类。

javac sorting/Rectangle.java
javac sorting/Test.java

从包含您的源的目录中:

运行javac Test.java Rectangle.java或仅javac *.java

您的班级需要相互了解。 Rectangle 不依赖于外部类,因此它自己编译得很好。但是Test依赖于Rectangle但不了解类,因此将它们编译在一起可以解决此问题。

相关内容

  • 没有找到相关文章

最新更新