Dla każdej litery wyświetla się ten sam komunikat - gdzie jest błąd?

0

Proszę o znalezienie błędu w moim programie. Jakąkolwiek literę nie wpiszę zawsze wyświetla się komunikat: "Niepoprawna wartość."


import java.util.Scanner;

public class App {

	public static void main(String[] args) {
		System.out.println("Wybierz jednostkę temperatury (\"C\" dla stopni Celciusza, \"F\" dla stopni Fahrenheit'a)");

		Scanner input = new Scanner(System.in);
		String jednostka = input.next();
		jednostka.toString();

		System.out.println(jednostka);

		if (jednostka == "C" || jednostka == "c") {
			System.out.println("Podaj temperature w stopniach Celciusza.");
			Scanner inputC = new Scanner(System.in);
			double celcius = inputC.nextDouble();
			double fahrenheit = 9.0 / 5.0 * (celcius + 32);
			System.out.println(celcius + " stopni Celciusza równa się " + fahrenheit + " stopni Fahrenheit'a.");
			inputC.close();
		}

		else if (jednostka == "F" || jednostka == "f") {
			System.out.println("Podaj temperature w stopniach Fahrenheit'a.");
			Scanner inputF = new Scanner(System.in);
			double fahrenheit = inputF.nextDouble();
			double celcius = 5.0 / 9.0 * (fahrenheit - 32);
			System.out.println(fahrenheit + " stopni Fahrenheita równa się" + celcius + " stopni Celciusza.");
			inputF.close();
		}

		else {
			System.out.println("Niepoprawna wartość.");
		}
		input.close();

	}

}
0

Nie porównuj Stringow za pomocą ==. Użyj metody equals.

== oznacza porównanie referencji, czyli czy zmienne wskazują na ten sam obiekt w pamięci, a nie taki sam.

0

Okej dzięki. Metody 'equals' jeszcze nie przerabiałem. :)

0

@salceson, to teraz ją przynajmniej zrozumiesz :)

0

Bez metody equals też można

        char jednostka = input.next().charAt(0); 
        System.out.println(jednostka);
 
        if (jednostka == 'C' || jednostka == 'c') {
0

Albo i:

if(jednostka.toLowerCase().startsWith("c") {
 

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