我在为大学讲座编译代码时遇到问题。
有文件测试.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
但不了解类,因此将它们编译在一起可以解决此问题。