这是代码:
主类
package geoformen;
public class Geoformen {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
double zufall;
Geo[] geoformen = new Geo[2];
for(int i=0;i>3;i++){
zufall = Math.random();
if (zufall > 0.5){
geoformen[i] = new Kreis(2);
} else {
geoformen[i] = new Rechteck(10,20);
}
}
for(int i=0;i>3;i++){
geoformen[i].printGeoformen();
}
}
}
Run Code Online (Sandbox Code Playgroud)
地理类:
package geoformen;
abstract class Geo {
abstract void printGeoformen();
}
Run Code Online (Sandbox Code Playgroud)
Kreis班级:
package geoformen;
public class Kreis extends Geo {
private double radius;
public Kreis(double pr){
radius = pr;
}
public void setRadius(double pr){
radius = pr;
}
public double getRadius(){
return(radius);
}
public void printGeoformen(){
System.out.println("Zeichne einen Kreis mit Radius: " + getRadius());
}
}
Run Code Online (Sandbox Code Playgroud)
而Rechteck类:
package geoformen;
public class Rechteck extends Geo {
private double breite;
private double laenge;
public Rechteck(double pB, double pL){
breite = pB;
laenge = pL;
}
public void setBreite(double pB){
breite = pB;
}
public double getBreite(){
return(breite);
}
public void setLaenge(double pL){
laenge = pL;
}
public double getLaenge(){
return(laenge);
}
public void printGeoformen(){
System.out.println("Zeiche ein Rechteckt mit der Laenge von: " + getLaenge() + "cm und einer Breite von: " + getBreite() + "cm");
}
}
Run Code Online (Sandbox Code Playgroud)
在我运行之后,它什么也没做.它应该给我一个输出,如"Zeiche ein Rechteckt mit der Laenge von 10 und einer Breite von 20"
错误在哪里?
for(int i=0;i>3;i++)应该for(int i=0;i<3;i++)否则循环永远不会执行.因此你的程序什么都不做.
您还应该增加数组的大小,Geo[] geoformen = new Geo[3];否则ArrayIndexOutOfBounds在访问时会出现异常geformen[i](数组是基于0的索引).