Błędny kod czy błędna konfiguracja (Java)?

0

Witam. To mój pierwszy post na forum, więc przy okazji chciałem się przywitać :)
A teraz do rzeczy. Przerabiam kurs Javy na pewnej stronie internetowej i natrafiłem na problem. Jestem przy temacie instrukcji sterujących (if, else if, else i switch). Na końcu lekcji jest ćwiczenie do samodzielnego wykonania. Brzmi ono tak:

"Napisz program, który pobierze od użytkownika imię i przechowa je w zmiennej. Następnie stwórz kilka warunków z różnymi imionami. Jeśli któreś z imion będzie pasowało wyświetl "Cześć jakieś_imię", gdy program nie znajdzie imienia wyświetl "Przykro mi, ale Cię nie znam"."

Postanowiłem skorzystać z instrukcji switch, ponieważ czytałem, że od wersji Javy 1.7 switch umożliwia operacje na stringach. Niżej podaję kod, który napisałem:

import java.util.Scanner;

public class Klasa1 {
	public static void main(String[] args) {
		String imie;
		Scanner odczyt = new Scanner(System.in);
		
		System.out.println("Podaj swoje imie");
		imie = odczyt.nextLine();
		
		switch(imie){
		case Michał:
			System.out.println("Cześć Michał");
			break;
		case Grażyna:
			System.out.println("Cześć Grażyna");
			break;
		case Grzegorz:
			System.out.println("Cześć Grzegorz");
			break;
		default:
			System.out.println("Przykro mi, ale Cię nie znam");
		}

	}

}

Jednak Eclipse Indigo przy każdym imieniu wyświetla mi błąd "(imie) cannot be resolved to a variable". Moja wersja Javy jdk to 1.8. System operacyjny to Windows 7 32-bit. Dodałem zmienną środowiskową katalogu bin do ścieżki path. Wszystkie poprzednie kody kompilowały się bez problemu. Kiedy skopiowałem kod do notatnika i próbowałem skompilować kod w wierszu poleceń - też wywaliło błąd. Czy problem tkwi w kodzie czy w konfiguracji jdk lub Eclipse?

1

AFAIK Stringi umieszcza się w cudzysłowie.

0

Te wszystkie stringi w case'ach musisz dać w cudzysłowie. Błąd który Ci się wyświetla mówi, że nie ma takiej zmiennej jak (imię), a przecież to nie ma być zmienna tylko ciąg znaków.
Czyli:

switch(imie){
        case "Michał":
            System.out.println("Cześć Michał");
            break;
        case "Grażyna":
            System.out.println("Cześć Grażyna");
            break;
        case "Grzegorz":
            System.out.println("Cześć Grzegorz");
            break;
        default:
            System.out.println("Przykro mi, ale Cię nie znam");
}
0

Działa. Rzeczywiście o to chodziło. Dziwne, bo wydaje mi się, że próbowałem wcześniej dodać cudzysłowy a jednak nie wychodziło. Ale może zrobiłem to zanim zainstalowałem nowszą wersję jdk niż 1.6. Tak czy inaczej dzięki!

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