2016-10-23 1 views
-2

Я пытаюсь запустить этот проект самолета, и я не могу на всю жизнь понять, как добавить время в «public void addHours()», , или если я даже сделал это правильно! Любая помощь будет фантастической!Как добавить время через методы, addHours() в Java

Вопрос ответить:

Создать класс Time. Этот класс будет представлять собой момент времени, такой как в качестве времени отправления. Он должен содержать 2 конструктора, 2 экземпляра переменных (час и минуту) и 10 методов (см. Ниже). Все методы , но toString должно быть в формате 24 часа. default constructor: Создает объект Time для 12:00 AM. overloaded constructor: Создает объект Time в определенные часы и минуты. getHour(): возвращает целое число, представляющее час объекта . getMinute(): Возвращает целое число, представляющее минуту объекта времени . addHours (...): Обновляет объект, перемещая его вперед количество часов. addMinute (...): Обновляет объект, перемещая его вперед на несколько минут. (Подсказка: будьте осторожны, чтобы вы не допустили, чтобы минут было больше 59.) addTime (...): Обновляет объект по , перемещая его вперед на час и минуту из другого объекта времени. getCopy (...): возвращает новый объект Time, который имеет тот же час и минута существующего объекта Time. isEarlierThan (...): Возвращает true , если этот объект времени ранее, чем другой объект Time. isSameTime (...): Возвращает true, если этот объект времени совпадает с другим временным объектом. isLaterThan (...): Возвращает true, если это время объект позже другого объекта времени. toString(): Возвращает строку , представляющую объект Time. Использует 12-часовой формат AM/PM и прокладки минут, чтобы быть двумя цифрами. См. Пример вывода для примера.

Это мой класс времени до сих пор:

public class Time { 
    public static int hour; 
    public static int minute; 

    public Time() { 
    } 
    public Time(int h, int m) { 
     h = hour; 
     m = minute; 
    } 
    public int getHour() { 
     return hour; 
    } 
    public int getMinute() { 
     return minute; 
    } 
    public void addHours(int h) { 
     h = h + hour; 
    } 
    public void addMinutes(int m) { 
     //Minute should not allow past 59 minutes. 
     if (m <= 59) 
     m = m + minute; 
    } 
    public void addTime(Time other) { 
    } 
    public Time getCopy() { 
     //need to fix return statement 
     return null; 
    } 
    public boolean isEarlierThan(Time other) { 
     return (Boolean) null; 
     //need to fix return statement. 
    } 
    public boolean isSameTime(Time other) { 
     return (Boolean) null; 
     //need to fix return statement. 
    } 
    public boolean isLaterTHan(Time other) { 
     return (Boolean) null; 
     //need to fix return statement. 
    } 
    public String formatDigits(int i) { 
     return null; 
     //need to fix return statement. 
    } 
    public String toString() { 
     return null; 
    } 

} 

Ниже драйвера:

public class Driver { 
    public static void main(String[] args) { 

     //Please note that these tests are not comprehensive. 
     //testAirline(); 
     //testAirport(); 
     //testPlane(); 
     //testTime(); 
     //testFlight(); 
    } 

    public static void testAirline() { 
     System.out.println("==testAirline()=="); 
     /* 
     //Test 1: create enum variables 
     Airline a1 = Airline.American; 
     Airline a2 = Airline.United; 
     Airline a3 = Airline.Delta; 
     Airline a4 = Airline.United; 

     //Test 2: display and compare variables 
     System.out.println("a1: " + a1); 
     System.out.println("a2 == a3: " + (a1 == a2)); 
     System.out.println("a2 == a4: " + (a2 == a4)); 
     */ 
    } 

    public static void testAirport() { 
     System.out.println("==testAirport()=="); 

     /* 
     //Test 1: create enum variables 
     Airport a1 = Airport.PHX; 
     Airport a2 = Airport.LAX; 
     Airport a3 = Airport.SFO; 
     Airport a4 = Airport.NRT; 
     Airport a5 = Airport.SIN; 

     //Test 2: display and compare variables 
     System.out.println("a1: " + a1); 
     System.out.println("a2 == a3: " + (a1 == a2)); 
     System.out.println("a2 == a4: " + (a2 == a4)); 
     System.out.println("a1: " + Airport.getAirportCity(a1)); 
     System.out.println("a3: " + Airport.getAirportCity(a3)); 
     System.out.println("a5: " + Airport.getAirportCity(a5)); 
     */ 
    } 

    public static void testPlane() { 
     System.out.println("==testPlane()=="); 
     /* 

     //Test 1: create plane objects 
     Plane p1 = new Plane(Airline.Delta, "Boeing 717"); 
     Plane p2 = new Plane(Airline.United, "Airbus A321"); 

     //Test 2: display plane information. 
     System.out.println(p1.getAirline()); 
     System.out.println(p1.getModel()); 
     System.out.println(p1); 
     System.out.println(p2); 
     */ 
    } 

    public static void testTime() { 
     System.out.println("==testTime()=="); 

     /* 
     //Test 1: use default constructor. 
     Time t1 = new Time(); 

     //Test 2: use overloaded constructor. 
     Time t2 = new Time(9, 0); 
     Time t3 = new Time(1, 15); 

     //Test 3: use clone operation. 
     Time t4 = t3.getCopy(); 

     //Test 4: run toString on AM times. 
     System.out.println(new Time(0, 5)); 
     System.out.println(new Time(1, 15)); 
     System.out.println(new Time(2, 45)); 
     System.out.println(new Time(10, 5)); 
     System.out.println(new Time(11, 15)); 
     //Test 5: run toString on PM times. 
     System.out.println(new Time(12, 45)); 
     System.out.println(new Time(13, 5)); 
     System.out.println(new Time(22, 15)); 
     System.out.println(new Time(23, 45)); 

     //Test 6: run toString on object from default constructor. 
     System.out.println("t1: " + t1); 

     //Test 7: testing addTime operation 
     System.out.println("t2: " + t2); 
     t2.addTime(t3); 
     System.out.println("t2: " + t2); 
     //Test 8: testing addMinutes operation 
     t2.addMinutes(181); 
     System.out.println("t2: " + t2); 
     //Test 9: testing8 addHours operation 
     t2.addHours(2); 
     System.out.println("t2: " + t2); 

     //Test 10: testing cloned copy. 
     t4.addHours(1); 
     System.out.println("t3: " + t3);//original 
     System.out.println("t4: " + t4);//clone 

     //Test 11: testing isEarlierThan. 
     System.out.println("t3 < t4: " + t3.isEarlierThan(t4)); 
     System.out.println("t4 < t3: " + t4.isEarlierThan(t3)); 
     System.out.println("t2 < t4: " + t2.isEarlierThan(t4)); 
     System.out.println("t4 < t2: " + t4.isEarlierThan(t2)); 
     System.out.println("t2 < t2: " + t2.isEarlierThan(t2)); 

     //Test 12: testing isLaterThan. 
     System.out.println("t2 > t4: " + t2.isLaterThan(t4)); 
     System.out.println("t4 > t2: " + t4.isLaterThan(t2)); 
     System.out.println("t4 > t4: " + t4.isLaterThan(t4)); 

     //Test 13: testing isSameTime. 
     System.out.println("t2 = t4: " + t2.isSameTime(t4)); 
     System.out.println("t4 = t4: " + t4.isSameTime(t4)); 
     System.out.println("t4 = 2:15AM: " + t4.isSameTime(new Time(2, 15))); 
     */ 
    } 

    public static void testFlight() { 
     System.out.println("==testFlight()=="); 
     /* 
     //Test 1: create flights using different settings 
     Flight f1 = new Flight(new Plane(Airline.American, "Airbus A321"), 
           "495", 
           79, 
           new Time(11,5), 100, 
           Airport.PHX, Airport.LAX); 

     Flight f2 = new Flight(new Plane(Airline.Delta, "Boeing 717"), 
           "1063", 
           79, 
           new Time(7, 10), 
           95, 
           Airport.PHX, 
           Airport.LAX); 

     Flight f3 = new Flight(new Plane(Airline.American, "Airbus A321"), 
           "400", 
           44, 
           new Time(21, 25), 
           127, 
           Airport.PHX, 
           Airport.SFO); 

     Flight f4 = new Flight(new Plane(Airline.United, "Boeing 787"), 
           "400", 
           525, 
           new Time(10, 50), 
           715, 
           Airport.LAX, 
           Airport.NRT); 

     Flight f5 = new Flight(new Plane(Airline.United, "Boeing 737"), 
           "414", 
           59, 
           new Time(6, 50), 
           85, 
           Airport.LAX, 
           Airport.SFO); 


     System.out.println(f1.toDetailedString()); 
     System.out.println(); 
     System.out.println(f1.toOverviewString()); 

     System.out.println(); 
     System.out.println(); 

     System.out.println(f5.toDetailedString()); 
     System.out.println(); 
     System.out.println(f5.toOverviewString()); 
     */ 
    } 
} 
+2

Вы должны назначать 'hour', а не' h'. У вас есть аналогичная проблема во всем классе. Кроме того, ваши поля не должны быть 'static'. – 4castle

+0

Я обновил «час = час + час»; и минуту. Мой вопрос: как обновить метод addTime. Я пробовал как миллион разных вещей и получил как миллион различных ошибок. Я просто потерян. – TheMuffinMan

+0

покажите нам одну из миллионов разных вещей, разместив ее в своем вопросе. – Blip

ответ

2

Использование

hour += h; 

вместо

h = h + hour; 

Также в использовании функции addMinutes следующее:

minute += m; 
if(minute > 59){ 
    hour += minute/60; 
    minute = minute%60; 
} 

Также объявляющего hour и minute как static приведет к модификации этих переменных будут одни и те же значения во всех случаях, и любое изменение в одном случае привело бы к в модификации всех других экземпляров.

После вашего комментария

Насколько текущий код обеспокоен, так как вы decalred hour и minute, как staticaddTime метода будет только дважды текущее времени.

Поскольку вы хотите преобразовать hour и minute в переменную экземпляра, я думаю, что следующий процесс addTime очень прост. Вы заявили, что попробовали миллион вещей, но не можете опубликовать ни одной вещи. Поэтому я бы подумал, что вы не пробовали и просто просили нас дать вам решение. Тем не менее, я хотел бы предоставить вам решение:

public void addTime(Time other){ 
    addHours(other.getHour()); 
    addMinutes(other.getMinute()); 
} 

Другие, чем это есть другая проблема AM/PM в решении. Кроме того, вы не позаботились о том условии, когда добавляется какое-то количество минут до 11:59 вечера.

Если вы хотите получить решение для других методов, пожалуйста, сначала попробуйте. Затем, если вы столкнулись с какой-либо проблемой, отправьте вопрос с соответствующим кодом.

+0

Как применить это к методу addTime? Исходный конструктор Time, имеет объект, установленный для него в течение 12:00 AM. Как бы я обновил объект Other до метода addMinutes. – TheMuffinMan

+0

@ TheMuffinMan во-первых, вы хотите, чтобы переменные 'minute' и' hour' были переменными класса или переменными экземпляра. Поскольку вы использовали их как переменные класса, нет никакой утилиты метода 'addTime', поскольку он просто удваивает существующее время независимо от того, что вы делаете. – Blip

+0

Я удалил статику с минуты и часа. addHours (...): Обновляет объект, перемещая его вперед на несколько часов. addMinute (...): Обновляет объект, перемещая его вперед на несколько минут. (Подсказка: будьте осторожны, чтобы вы не допустили минут больше, чем 59.) ^^ Вышеописанное. addTime (...): Обновляет объект, перемещая его вперед на час и минуту из другого объекта времени. getCopy (...): Возвращает новый объект Time, который имеет те же часы и минуты текущего объекта Time. – TheMuffinMan

-1

Измените addHours и addMinutes метод

public void addHours(int h) { 
    h = h + hour; 
} 
public void addMinutes(int m) { 
    //Minute should not allow past 59 minutes. 
    if (m <= 59) 
    m = m + minute; 
} 

к этому

public void addHours(int h) { 
    hour += h; 
} 
public void addMinutes(int m) { 
    minute += m; 
    if(minute > 59){ 
     hour += minute/60; 
     minute = minute%60; 
    } 
} 

Объяснение: При добавлении мин, он может изменить свой час тоже. и у вас новый час и минуты.

Например. 10 минут добавляется к 55 минутам, увеличится час на один, а новая минута будет 5

+0

Итак, как я могу включить их в метод addTime? – TheMuffinMan

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