Przeciążenie metod cd..

Zadanie.

1. Utwórz metodę o nazwie calcFeetAndInchesToCentimeters, która ma przyjmować dwa parametry. Pierwszym są stopy („feet”), a drugim cale  („inches”).

Zadaniem jest potwierdzić, że dane będą współgrały prawidłowo. Po pierwsze musimy sprawdzić czy pierwszy parametr „feet”>=0, tzn jeśli wartość jest większa lub równa 0 to jest ona prawidłowa ( nie możemy przyjąć wartości mniejszej niż 0). Dla drugiego parametru chcemy upewnić się, czy jest on równy lub większy od 0 i równy lub mniejszy od 12. Jeśli okaże się, że któryś z parametrów nie jest prawidłowy (np. jeśli „feet”<0), zwróć -1.

Jeśli parametry są prawidłowe, oblicz ile centymetrów składa się na „feet” and „inches” przekazane do tej metody (czyli musimy przekształcić stopy and cale na centymetry) i zwróć tą wartość.

2. Utwórz drugą metodę o takiej samej nazwie jak poprzednia ale tylko z jednym parametrem o nazwie „inches”, który ma być >=0, zwróć -1 w przypadku fałszu. Jeśli jest prawidłowy, oblicz ile stóp („feet”) jest w calach.

Nazwij inną przeciążoną metodę przekazując prawidłowe „feet” i „inches” wyliczone tak, żeby były prawidłowe.

Wskazówki: użyj typu danych „double”. 1 inch=2.54 cm, 1 foot= 12 inches. Użyj łącze https://www.metric-conversions.org/conversion-calculators.htm żeby sprawdzić, czy twój kod jest prawidłowy. Przywołując kolejną przeciążoną metodę, potrzebujesz użyć prawidłowych numerów parametrów.

Rozwiązanie:

 

public class Main {

    public static void main(String[] args) {
        calcFeetAndInchesToCentimeters(6,0);

    }

    public static double calcFeetAndInchesToCentimeters
            (double feet, double inches){
        if ((feet<0) || ((inches<0)||inches>12))){
            System.out.println("Invalid feet and inches");
            return-1;

        }
        double centimeters= (feet)*12*2.54;
        centimeters+=inches*2.54;
        System.out.println(feet + " feet, "+ inches +" inches ="+  centimeters + "cm");
        return centimeters;

    }





po uruchomieniu powyższego kodu otrzymujemy:

6.0 feet, 0.0 inches =182.88cm. Sprawdzając na stronie internetowej wartość centymetrów  dla 6 stóp otrzymujemy wartość 182.8800cm, tak więc nasz kod przeliczył prawidłowo.

Jeśli zmienimy parametry np.

calcFeetAndInchesToCentimeters(-10,0), a więc wartość feet = -10 jest nieprawidłowa , bo jest mniejsza od 0,

public class Main {

    public static void main(String[] args) {

        calcFeetAndInchesToCentimeters(-10,0);

    }

    public static double calcFeetAndInchesToCentimeters
            (double feet, double inches){
        if ((feet<0) || ((inches<0)||(inches>12))){
            System.out.println("Invalid feet and inches");
            return-1;

        }
        double centimeters= (feet)*12*2.54;
        centimeters+=inches*2.54;
        System.out.println(feet + " feet, "+ inches +" inches ="+  centimeters + "cm");
        return centimeters;

    }





w oknie konsoli wyświetli się:

Invalid feet and inches.

Taka sama informacja wyświetla się, jeśli zmienimy wartość dla cali np. na liczbę mniejszą od 0 albo większą od 12.

Żeby przetestować prawidłowość metody dobrze jest użyć kodu „return-1” czy nasze obliczenia są prawidłowe. To co możemy zrobić jest określenie w metodzie main zmiennej double i przypisanie do niej metody calcFeetAndInchesToCentimetres.

Wówczas:

public class Main {

    public static void main(String[] args) {


        double centimetres =  calcFeetAndInchesToCentimeters(-10,0);
        if  (centimetres <0.0){
            System.out.println("Invalid parameters");

        }
    }

    
    public static double calcFeetAndInchesToCentimeters
            (double feet, double inches){
        if ((feet<0) || ((inches<0)&&(inches>12))){
            System.out.println("Invalid feet and inches");
            return-1;

        }
        double centimeters= (feet)*12*2.54;
        centimeters+=inches*2.54;
        System.out.println(feet + " feet, "+ inches +" inches ="+  centimeters + "cm");
        return centimeters;

    }





w oknie konsoli wyświetli się (jeśli przyjmiemy nieprawidłowe parametry):

Invalid feet and inches
Invalid parameters

 

2.

public class Main {

    public static void main(String[] args) {

        int newScore = calculateScore("Tim", 500);
        System.out.println("New score is " + newScore);
        calculateScore(75);
        calculateScore();

        double centimetres = calcFeetAndInchesToCentimeters(-10, 0);
        if (centimetres < 0.0) {
            System.out.println("Invalid parameters");

        }
        calcFeetAndInchesToCentimeters(100);
    }

public static double calcFeetAndInchesToCentimeters
        (double inches) {
    if ((inches < 0)) {
        return -1;
    }

    double feet = (int) inches / 12;
    double remainingInches = (int) inches % 12;
    System.out.println(inches + " inches is equal to " + feet +
            " feet and " + remainingInches + "inches");
    return calcFeetAndInchesToCentimeters(feet, remainingInches);


}

po uruchomieniu w/w kodu, w oknie konsoli pojawi się:

100.0 inches is equal to 8.0 feet and 4.0inches
8.0 feet, 4.0 inches =254.0cm