Что-то не так с методом setZone? - PullRequest
0 голосов
/ 12 марта 2020

Я делаю программу, которая расширяет часы, чтобы показать имена часовых поясов. Производный класс должен иметь элемент данных массива stati c String со значениями: EST, CST, MST, PST, EDT, CDT, MDT, PDT, элемент данных зоны, конструктор по умолчанию, конструктор с параметрами, setZone (), метод getZone (), метод printTime (), метод toString (), метод equals (), метод makeCopy () и метод getCopy ().

public class Clock {
    private int hr;
    private int min;
    private int sec;
    public Clock() {
        hr = 0;
        min = 0;
        sec = 0;
    }
    public Clock(int hours, int minutes, int seconds) {
        if (0 <= hours && hours < 24) {
            hr = hours;
        }
        else {
            hr = 0;
        }
        if (0 <= minutes && minutes < 60) {
            min = minutes;
        }
        else {
            min = 0;
        }
        if (0 <= seconds && seconds < 60) {
            sec = seconds;
        }
        else {
            sec = 0;
        }
    }
    public Clock(Clock otherClock) {
        hr = otherClock.hr;
        min = otherClock.min;
        sec = otherClock.sec;
    }
    public void setTime(int hours, int minutes, int seconds) {
        if (0 <= hours && hours < 24) {
            hr = hours;
        }
        else {
            hr = 0;
        }
        if (0 <= minutes && minutes < 60) {
            min = minutes;
        }
        else {
            min = 0;
        }
        if (0 <= seconds && seconds < 60) {
            sec = seconds;
        }
        else {
            sec = 0;
        }
    }
    public int getHours() {
        return hr;
    }
    public int getMinutes() {
        return min;
    }
    public int getSeconds() {
        return sec;
    }
    public void printTime() {
        if (hr < 10) {
            System.out.print("0");
        }
        System.out.print(hr + ":");

        if (min < 10) {
            System.out.print("0");
        }
        System.out.print(min + ":");

        if (sec < 10) {
            System.out.print("0");
        }
        System.out.print(sec);
    }
    public void incrementHours() {
        hr++;
        if (hr > 23) {
            hr = 0;
        }
    }
    public void incrementMinutes() {
        min++;
        if (min > 59) {
            min = 0;
            incrementHours();
        }
    }
    public void incrementSeconds() {
        sec++;
        if (sec > 59) {
            sec = 0;
            incrementMinutes();
        }
    }
    public boolean equals(Clock otherClock) {
        return (hr == otherClock.hr && min == otherClock.min && sec == otherClock.sec);
    }
    public void makeCopy(Clock otherClock) {
        hr = otherClock.hr;
        min = otherClock.min;
        sec = otherClock.sec;
    }
    public Clock getCopy() {
        Clock temp = new Clock();
        temp.hr = hr;
        temp.min = min;
        temp.sec = sec;
        return temp;
    }
    public String toString() {
        String str = "";
        if (hr < 10) {
            str = "0";
        }
        str += hr + ":";

        if (min < 10) {
            str += "0";
        }
        str += min + ":";

        if (sec < 10) {
            str += "0";
        }
        str += sec;

        return str;
    }
}

class ExtClock extends Clock {
    static String[] timeZone = {"EST", "CST", "MST", "PST", "EDT", "CDT", "MDT", "PDT"};
    private String zone;
    public ExtClock() {
        super();
        zone = "";
    }
    public ExtClock(int hours, int minutes, int seconds, String tz) {
        super(hours, minutes, seconds);
        zone = tz;
    }
    public void setZone(int hours, int minutes, int seconds, String tz) {
        setTime(hours, minutes, seconds);
        zone = tz;
    }
    public String getZone() {
        return zone;
    }
    public void printTime() {
        super.printTime();
        System.out.println(" " + zone);
    }
    public String toString() {
        return super.toString() + " " + zone;
    }
    public boolean equals(ExtClock otherClock) {
        return super.equals(otherClock) && zone.equalsIgnoreCase(otherClock.zone);
    }
}

public class ExtClockTest {
    public static void main(String[] args) {
        ExtClock myExtClock = new ExtClock(5,4,30,"EST");
        ExtClock yourExtClock = new ExtClock(0,0,0,"");
        setZone.yourExtClock(5,45,16,"CDT");
    }
}

Производный класс компилируется нормально, но программа ExtClockTest не компилируется, потому что говорит, что не может найти символ. Я что-то не так делаю?

1 Ответ

1 голос
/ 12 марта 2020

Вы поместили метод перед объектом.

setZone.yourExtClock(5,45,16,"CDT");

Это должно быть: Obj.method ()

yourExtClock.setZone(5,45,16,"CDT");
...