2015-10-22 3 views
-2

Я только что начал Java три недели назад, и все прошло отлично. Хотя я столкнулся с проблемой с одним из моих классов. При выборе «нового флота» на классе флота и заполнении соответствующих полей параметров я получаю Error:incompatible types: java.lang.String cannot be converted to Ship.. Я просматривал сообщения и дискуссии по различным подобным вопросам, но не нашел ничего, что помогало мне.Ошибка несогласованных типов Класс Java

Это задание для проекта в школе, и я был бы очень признателен за то, что вы это понимаете, а не для того, чтобы дать мне ответ прямо, но просто укажите мне в правильном направлении.

ПОДСКАЖИТЕ: Постановка задачи

Вы были введены в эксплуатацию ВМС США разработать систему для отслеживания количества потребляемого топлива флоты судов. Каждый корабль имеет название (например: «USS Montana»), топливная способность (максимальное количество топлива, которое может перевозить судно), и количество топлива, находящегося на борту. В этой задаче топливо измеряется в «единицах», а мощность каждого судна - целое число (например: емкость перевозчика составляет 125 единиц топлива). У каждого флота всего четыре корабля. Когда флот развернут, каждое судно в флоте развернуто. Когда судно развертывается, оно потребляет половину топлива, которое оно имеет на борту. Когда флот заправляется, каждое судно в флоте заправляется топливом. Когда судно заправляется, оно полностью заполнено (его бортовая сумма равна его мощности).

Назначение

Создание проекта BlueJ под названием Outlab2, добавить класс называется Driver этот код и вставьте в него. Драйвер не должен изменяться. Внимательно просмотрите Драйвер, поскольку он содержит подсказки о структуре остальной части программы. Ваш класс Fleet нуждается в 4 методах: Конструктор, который принимает 4 судна в качестве параметров. Метод, который называется развертывание, которое будет развертывать каждое судно в парке. Метод, называемый заправкой, который будет дозаправлять каждый корабль в флоте. Метод, называемый printSummary, который будет печатать для каждого корабля имя судна и общее количество единиц топлива, которые были отправлены на протяжении всего своего существования. Из обзора драйвера вы можете видеть, что вам также понадобится класс корабля. Конструктор этого класса возьмет название судна и топливную мощность в качестве параметров. Вывод из задачи Заявление о том, какая переменная и методы экземпляра вам нужны в классе Ship.

Это мой код: Класс судна

Вот что я пробовал:

Класс судна: класс

/** 
* Ship's name, fuel levels, and fuel usage. 
* 
* @author JGW 
* @version 11/20/15 
*/ 
public class Ship 
{ 
    public String name; 
    public int fuelcapacity; 
    public int fuelcurrent; 
    public int fuelconsumed; 
    /** 
    * Constructor for objects of class Fleet 
    */ 
    public Ship(String n, int cap) 
    { 
     name = n; 
     fuelcapacity = cap; 
     fuelcurrent = fuelcapacity; 
    } 
    public void deploy() 
    { 
     fuelconsumed += fuelcurrent/2; //Adds the fuel used to the lifetime total consumption. 
     fuelcurrent = fuelcurrent/2; //Divides the current fuel in half. 
    } 
    public void reFuel() 
    { 
     fuelcurrent = fuelcapacity; //Refills the ship's fuel to maximum capacity. 
    } 
    public String getName() 
    { 
     return name; 
    } 
    public int getFuelconsumed() 
    { 
     int x = fuelconsumed; //Returns total fuel consumed. 
     return x; 
    } 

Fleet class: 


    /** 
    * Calls upon methods for 4 different Ships as well as showing their lifetime fuel usage. 
    * 
    * @author JGW 
    * @version 11/20/15 
    */ 
    public class Fleet 
    { 
     public Ship ship1; 
     public Ship ship2; 
     public Ship ship3; 
     public Ship ship4; 
     /** 
     * Constructor for objects of class Fleet 
     */ 
     public Fleet(Ship s1, Ship s2, Ship s3, Ship s4) 
     { 
      ship1 = s1; 
      ship2 = s2; 
      ship3 = s3; 
      ship4 = s4; 
     } 
     public void deploy() 
     { 
      ship1.deploy(); //Deploys all 4 ships. 
      ship2.deploy(); 
      ship3.deploy(); 
      ship4.deploy(); 
     } 
     public void reFuel() 
     { 
      ship1.reFuel(); //Refuels all 4 ships. 
      ship2.reFuel(); 
      ship3.reFuel(); 
      ship4.reFuel(); 
     } 
     public void printSummary() 
     { 
      System.out.println(ship1.getName() + " " + ship1.getFuelconsumed()); 
      System.out.println(ship2.getName() + " " + ship2.getFuelconsumed()); 
      System.out.println(ship3.getName() + " " + ship3.getFuelconsumed()); 
      System.out.println(ship4.getName() + " " + ship4.getFuelconsumed()); 
      //Prints out how much fuel each ship has used. 
     } 
    } 

Driver:

/** 
* Driver for Outlab2. 
*/ 
public class Driver 
{ 
    public static void main(String[] args) 
    { 
     //Creating 4 instances of Ship 
     Ship ship1 = new Ship("Carrier", 150); 
     Ship ship2 = new Ship("Anti-Submarine", 35); 
     Ship ship3 = new Ship("Patrol", 22); 
     Ship ship4 = new Ship("Destroyer", 83); 

     //Creating instance of Fleet 
     Fleet fleet1 = new Fleet(ship1, ship2, ship3, ship4); 

     //Deploying the fleet twice 
     fleet1.deploy(); 
     fleet1.deploy(); 

     //Refuel the fleet once 
     fleet1.reFuel(); 

     //Print summary 
     fleet1.printSummary(); 
    } 
} 
+0

Помогите нам помочь. http://stackoverflow.com/help/mcve – ergonaut

+0

Пожалуйста, изучите [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). – Andreas

+0

Какая строка дает эту ошибку? – Andreas

ответ

-1

Ваш код компилируется нормально для меня. Убедитесь, что вы используете правильные файлы и что все будет сохранено. Общая ошибка начинающего в eclipse - это выбор неправильного активного проекта.

+1

Спасибо! Так было, у меня не было подходящего активного проекта. –

1

Это заявление:

When selecting "new Fleet" on the Fleet class 
and filling in the appropriate parameter fields I get 
Error:incompatible types: java.lang.String cannot be converted to Ship. 

Говорит мне вы передаете в строку в конструктор, как это:

Fleet fleet1 = new Fleet("ship1", "ship2", "ship3", "ship4"); 

Однако это не удастся, и код, который вы прошли в вашем вопросе не делает этого. Я подозреваю, что вы не показываете нам свой полный код.

Двойная проверка того, что у вас есть, это то, что вы отправили, и проверить переменную, которую вы передаете, действительно является Кодексом, а не строкой.

-2

я не прочитал задание, но ваш код хорошо, никаких ошибок на всех, я только что выполнил его и он работает

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