Konwerter jednostek - prawidłowe wyświetlanie wyników po obliczeniach

0

Muszę napisać konwerter jednostek. Oto polecenie:
"Opracować program do zamiany jednostek długości z metrów (wartości typu 4308.105) do wyboru na:

  1. kilometry, metry i milimetry (4km 308m 105mm)
  2. mile (wartości całkowite i ułamkowe)
  3. jardy
  4. stopy"

Nie wiem jak sprawić, żeby wynik po zamianie m na km był wyświetlany w km m i mm oraz jak wyświetlić mile o wartościach całkowitych i ułamkowych. Przesyłam to co już napisałem :

import java.util.Scanner;

public class conversionProgram

{
public static void showKilometry(double metr)
{
double kilometr = metr * 0.001;
System.out.println(metr +" metrów to " + kilometr + " kilometrów.");
}

public static void showMile(double metr)
{
double mila = metr * 0.00062;
System.out.println(metr +" metrów to " + mila + " mil.");
}

public static void showJardy(double metr)
{
double jard = metr * 1.093;
System.out.println(metr +" metrów to " + jard + " jardów.");
}

public static void showStopy(double metr)
{
double stopa = metr * 3.281;
System.out.println(metr +" metrów to " + stopa + " stóp.");
}

public static void quitProgram()
{
System.out.println("Do widzenia");
System.out.println(" ");
}
public static void showMenu()
{
System.out.println(" 1. Zamień na kilometry ");
System.out.println(" 2. Zamień na mile ");
System.out.println(" 3. Zamień na jardy");
System.out.println(" 4. Zamień na stopy ");
System.out.println(" 5. Opuść program ");
System.out.println(" ");
}

public static void main (String [] args)
{

double metry;
int choice;



Scanner keyboard = new Scanner (System.in);

System.out.println("Podaj dystans w metrach: ");
metry = keyboard.nextDouble();
showMenu();
choice = keyboard.nextInt();
switch(choice) //note the use of switch case
{
case 1: showKilometry(metry);
break;
case 2:showMile(metry);
break;
case 3: showJardy(metry);
break;
case 4:showStopy(metry);
break;
case 5:
quitProgram();
}
}
} 

"pokolorowałem - bogdans

1
  1. Po co opcja 5 (opuszczenie programu) skoro w programie nie ma pętli?
  2. Program już wyświetla mile tak jak trzeba.
public static void showKilometry(double metr)
{
    metr = Math.round(metr*1000)/1000.0;
    int metry = (int) Math.floor(metr);
    if(metr>=1000)
    {
        System.out.println(metry/1000+"km "+metry%1000+"m "+(int)Math.round(((metr-metry)*1000))+"mm");    
    }
    else
    {
        System.out.println(metry+"m "+(int)Math.round(((metr-metry)*1000))+"mm");
    }
}

Ze sformułowania zadania nie wynika jednoznacznie co ma się pojawić na wyjściu gdy użytkownik wpisze 308,9999999.

0

Bardzo dziękuję za szybką pomoc i wskazówki. Następnym razem będę się do nich stosował :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1