2016-02-15 6 views
-5

ожидаемый результат кода должен быть: «Все (еще) в порядке»неожиданный выход произошел

, но когда я запускаю мой класс неба: фактический выход заключается в следующем:

Bad StratusCloud :: дождь (неожиданный) Bad CumulusCloud :: дождь (неожиданная) Bad средней высоты: ожидается, 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; 
    } 
} 

являются следующими субами классов Облака: (имя 2 класса: CumulusCloud, StratusCloud)

package weather; 

public class "name" extends Cloud 
{ 
public "name"(float top,float bottom) 
{ 
    super(top,bottom); 
} 
} 

подкласс облака, которое является переопределением:

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; 
} 
} 
+0

Это не компилируется. Вы не можете поместить имя класса в кавычки: 'class 'name" 'неверно. Пожалуйста, покажите нам фактический код, который выводит ваш результат. – markspace

+0

Ошибка компилятора Ошибка синтаксиса на токене «" name ", ожидаемый идентификатор – Musaddique

+0

Я считаю, что OP указывает, что существуют два одинаковых класса, которые отличаются только« именем »(*' CumulusCloud' и * 'StratusCloud' *). –

ответ

1

Проверьте орфографию. В своем классе Облако это

rainning

Но в Sky класса

дождь

Смежные вопросы