【发布时间】:2016-02-15 05:20:39
【问题描述】:
代码的预期输出应该是:“Everything (else) is ok”
但是当我运行我的天空类时:实际输出如下:
Bad StratusCloud::rain(意外) 坏积云::雨(意外) 不好的平均高度:预期 1800,锯齿 -1800.0(意外) (其他)一切正常(预期)
以下是我的代码:
package weather;
import java.util.ArrayList;
public class Sky {
private ArrayList<Cloud> clouds;
public Sky(){
clouds = new ArrayList<Cloud>(100);
}
public boolean add(Cloud c){
clouds.add(c);
return true;
}
public float getMeanHeight()
{
float mean = 0;
float sum = 0;
for (Cloud c:clouds){
sum = sum +c.getHeight();
mean = sum/(clouds.size());
}
return mean;
}
public static void main(String[] args)
{
StratusCloud strat = new StratusCloud(100, 1000);
if (!strat.rain().startsWith("It is raining"))
System.out.println("Bad StratusCloud::rain");
CumulusCloud cumu = new CumulusCloud(200, 2000);
if (!cumu.rain().startsWith("It is raining"))
System.out.println("Bad CumulusCloud::rain");
CirrusCloud cirr = new CirrusCloud(300, 3000);
if (!cirr.rain().startsWith("I cannot make"))
System.out.println("Bad CirrusCloud::rain");
Sky sky = new Sky();
sky.add(strat);
sky.add(cumu);
sky.add(cirr);
float mean = sky.getMeanHeight();
if (mean < 1799 || mean > 1801)
System.out.println("Bad mean height: expected 1800, saw " + mean);
System.out.println("Everything (else) is ok");
}
}
超类云:
package weather;
public class Cloud
{
private float top;
private float bottom;
public Cloud(float top, float bottom)
{
this.top = top;
this.bottom = bottom;
}
public float getHeight()
{
float height = top - bottom;
return height;
}
public String rain()
{
String raining = "It is rainning";
return raining;
}
}
以下是Cloud的子类:(2个类的名称:CumulusCloud、StratusCloud)
package weather;
public class "name" extends Cloud
{
public "name"(float top,float bottom)
{
super(top,bottom);
}
}
被覆盖的 Cloud 子类:
package weather;
public class CirrusCloud extends Cloud{
public CirrusCloud(float top, float bottom)
{
super(top,bottom);
}
public String rain(){
super.rain();
String raining ="I cannot make rain";
return raining;
}
}
【问题讨论】:
-
这不会编译。您不能将类名放在引号中:
class "name"是错误的。请向我们展示产生输出的实际代码。 -
编译器错误令牌“名称”上的语法错误,需要标识符。
-
我相信 OP 表示有两个相同的类,它们仅在“名称”上有所不同(
CumulusCloud和StratusCloud)。