Program przeliczający temperature

0

witam napislaiśmy razem z kumplem program który przekształca temperaturę wyrażoną w stopniach: C, F, K na wszystkie pozostałe
jednostki. Moje pytanie to czy wszytsko jest dobrze i czy da się go jeszcze jakoś inaczej przekształcić tak żeby zachował ciągle tą samą strukture? poniżej program:

package xxx;

import java.util.Scanner;

public class Temperatura {
	public static void main(String[] args) {
		int a; // Jednostka
		double b; // Liczba do przeliczenia
		double c; // Pierwsze obliczenie
		double d; // Drugie obliczenie
		System.out.print("Podaj liczbę do przeliczenia: ");
		Scanner liczba = new Scanner(System.in);
		b = liczba.nextDouble();
		System.out.println("");
		System.out.println("Ze stopni Celsjusza naciśnij => 1");
		System.out.println("Ze stopni Fahrenheita naciśnij => 2");
		System.out.println("Ze stopni Kelwina naciśnij => 3");
		System.out.println("");
		System.out.print("Twój wybór to: ");
		Scanner jednostka = new Scanner(System.in);
		a = jednostka.nextInt();
		System.out.println("");

		switch (a) {
		case 1: // Z Celsjusza
			c = b + 273.15; // Stopnie Kelwina
			d = 1.8 * b + 32; // Stopnie Fahrenheita
			System.out.println("Stopnie Kelwina = " + c);
			System.out.println("Stopnie Fahrenheita = " + d);
			break;
		case 2: // Z Fahrenheita
			c = 0.5555555 * (b - 32); // Stopnie Celsjusza
			d = (b + 459.67) * 0.5555555; // Stopnie Kelwina
			System.out.println("Stopnie Celsjusza = " + c);
			System.out.println("Stopnie Kelwina = " + d);
			break;
		case 3: // Z Kelwina
			c = b - 273.15; // Stopnie Celsjusza
			d = (b * 1.8) - 459.67; // Stopnie Fahrenheita
			System.out.println("Stopnie Celsjusza = " + c);
			System.out.println("Stopnie Fahrenheita = " + d);
			break;
		default:
			System.out.println("Opcja z po za przedziału 1-3");
			break;
		}
	}
}
0

Jeśli byś chciał skrócić kod mógłbyś zamiast każdorazowo println użyć "\n"
Twój kod :

 System.out.println("");
                System.out.println("Ze stopni Celsjusza naciśnij => 1");
                System.out.println("Ze stopni Fahrenheita naciśnij => 2");
                System.out.println("Ze stopni Kelwina naciśnij => 3");
                System.out.println("");

Na :

                System.out.println("\nZe stopni Celsjusza naciśnij => 1 \nZe stopni Fahrenheita naciśnij => 2 \nZe stopni Kelwina naciśnij => 3 \n"); 

Scannera wystarczy raz zadeklarować :

Twój kod :

  Scanner liczba = new Scanner(System.in);
                b = liczba.nextDouble();
                System.out.println("");
                System.out.println("Ze stopni Celsjusza naciśnij => 1");
                System.out.println("Ze stopni Fahrenheita naciśnij => 2");
                System.out.println("Ze stopni Kelwina naciśnij => 3");
                System.out.println("");
                System.out.print("Twój wybór to: ");
                Scanner jednostka = new Scanner(System.in);
                a = jednostka.nextInt();

Na :

  Scanner liczba = new Scanner(System.in);
                b = liczba.nextDouble();
                System.out.println("");
                System.out.println("Ze stopni Celsjusza naciśnij => 1");
                System.out.println("Ze stopni Fahrenheita naciśnij => 2");
                System.out.println("Ze stopni Kelwina naciśnij => 3");
                System.out.println("");
                System.out.print("Twój wybór to: ");
                
                a = liczba.nextInt();

Oraz zainteresuj się typem wyliczeniowym enum i zamiast :

 switch (a) {
                case 1: // Z Celsjusza
                        c = b + 273.15; // Stopnie Kelwina
                        d = 1.8 * b + 32; // Stopnie Fahrenheita
                        System.out.println("Stopnie Kelwina = " + c);
                        System.out.println("Stopnie Fahrenheita = " + d);
                        break;
                case 2: // Z Fahrenheita
                        c = 0.5555555 * (b - 32); // Stopnie Celsjusza
                        d = (b + 459.67) * 0.5555555; // Stopnie Kelwina
                        System.out.println("Stopnie Celsjusza = " + c);
                        System.out.println("Stopnie Kelwina = " + d);
                        break;
                case 3: // Z Kelwina
                        c = b - 273.15; // Stopnie Celsjusza
                        d = (b * 1.8) - 459.67; // Stopnie Fahrenheita
                        System.out.println("Stopnie Celsjusza = " + c);
                        System.out.println("Stopnie Fahrenheita = " + d);
                        break;
                default:
                        System.out.println("Opcja z po za przedziału 1-3");
                        break;
                }

Mógłby switch wyglądać tak :

 switch (a) {
                case Celsjusza: // Z Celsjusza
                        c = b + 273.15; // Stopnie Kelwina
                        d = 1.8 * b + 32; // Stopnie Fahrenheita
                        System.out.println("Stopnie Kelwina = " + c);
                        System.out.println("Stopnie Fahrenheita = " + d);
                        break;
                case Fahrenheita: // Z Fahrenheita
                        c = 0.5555555 * (b - 32); // Stopnie Celsjusza
                        d = (b + 459.67) * 0.5555555; // Stopnie Kelwina
                        System.out.println("Stopnie Celsjusza = " + c);
                        System.out.println("Stopnie Kelwina = " + d);
                        break;
                case Kelwina: // Z Kelwina
                        c = b - 273.15; // Stopnie Celsjusza
                        d = (b * 1.8) - 459.67; // Stopnie Fahrenheita
                        System.out.println("Stopnie Celsjusza = " + c);
                        System.out.println("Stopnie Fahrenheita = " + d);
                        break;
                default:
                        System.out.println("Opcja z po za przedziału 1-3");
                        break;
                }

I jeszcze jedna moja sugestia nazwij inaczej zmienną "a" na bardziej zrozumiała "wybrana_opcja_menu" itp

link na temat enum : http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

To są tylko sugestie :) Jak będzie wyglądać ostateczny kod programu to zależy od ciebie :)

0

a możesz napisać cały kod po poprawce bo coś mi się knoci?

0

Zamiast typu wyliczeniowego zastosowałem stałe gdyż dawno nie programowałem w Javie i nie wiedziałem że typ wyliczeniowy się różni się w porównaniu z zastosowaniem w C++ i C# ;p


package xxx;

import java.util.Scanner;

public class Temperatura {

    public static void main(String[] args) {

        final int Celsjusza = 1;
        final int Fahrenheita = 2;
        final int Kelwina = 3;

        int wybor_opcji_menu; // Jednostka
        double b; // Liczba do przeliczenia
        double c; // Pierwsze obliczenie
        double d; // Drugie obliczenie
        Scanner liczba = new Scanner(System.in);

        System.out.print("Podaj liczbę do przeliczenia: ");

        b = liczba.nextDouble();

        System.out.println("\nZe stopni Celsjusza naciśnij => 1 "
                + "\nZe stopni Fahrenheita naciśnij => 2 "
                + "\nZe stopni Kelwina naciśnij => 3 \n");

        System.out.print("Twój wybór to: ");
        wybor_opcji_menu = liczba.nextInt();
        System.out.println();

        switch (wybor_opcji_menu) {
            case Celsjusza: // Z Celsjusza
                c = b + 273.15; // Stopnie Kelwina
                d = 1.8 * b + 32; // Stopnie Fahrenheita
                System.out.println("Stopnie Kelwina = " + c);
                System.out.println("Stopnie Fahrenheita = " + d);
                break;
            case Fahrenheita: // Z Fahrenheita
                c = 0.5555555 * (b - 32); // Stopnie Celsjusza
                d = (b + 459.67) * 0.5555555; // Stopnie Kelwina
                System.out.println("Stopnie Celsjusza = " + c);
                System.out.println("Stopnie Kelwina = " + d);
                break;
            case Kelwina: // Z Kelwina
                c = b - 273.15; // Stopnie Celsjusza
                d = (b * 1.8) - 459.67; // Stopnie Fahrenheita
                System.out.println("Stopnie Celsjusza = " + c);
                System.out.println("Stopnie Fahrenheita = " + d);
                break;
            default:
                System.out.println("Opcja z po za przedziału 1-3");
                break;
        }
    }
} 
0

przy kompilacji wywala błąd w pierwszej linijce?

0

oki juz zrobione zagapiłem się drobiazg thx

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