instrukcje warunkowe w wyjątkach

0

Witam, mam problem z napisaniem własnego wyjątku, który sprawdzałby, czy zmienna typu String ma konkretną wartość (R lub M).
Ogólnie, poniższa aplikacja ma segregować elementy tablicy rosnąco lub malejąco wg wyboru użytkownika. Normalnie zrobiłbym z instrukcją else ale wytyczne są takie, że musi być to obsługiwany wyjątek. Proszę pomóżcie

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class test {
	class BladS extends Exception{

		public BladS(String message) {
			super(message);
		}
	}

	public static String pobierzWybor() throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		return br.readLine();
	}

	public String czytajWybor() throws BladS {
		try {
			String znaki = pobierzWybor();
			if (znaki == "R" && znaki == "M") {
				return znaki;
			}
		} catch (Exception e) {
			throw new BladS("Dozwolona forma wyboru to R - rosnąco i M - malejąco.");
		}
			return null;
	}
	
	public static void main(String[] args) {
		int[] tab = new int[] {123, 432, 23, 54, 198};

		System.out.print("Wybierz formę sortowania: R - rosnąco lub M - malejąco: ");
		String wyb = czytajWybor();

		if (wyb == "R") {
			for (int i = 0; i < tab.length; i++) {
				for (int j = i + 1; j < tab.length; j++) {
					if (tab[i] > tab[j]) {
						int pom = tab[i];
						tab[i] = tab[j];
						tab[j] = pom;
					}
				}
			}
		}

		if (wyb == "M") {
			for (int i = 0; i < tab.length; i++) {
				for (int j = i + 1; j < tab.length; j++) {
					if (tab[i] < tab[j]) {
						int pom = tab[i];
						tab[i] = tab[j];
						tab[j] = pom;
					}
				}
			}
		}
	}
}
0

Ech... porównywanie stringów wygląda tak:

String str = "Ala ma kota";
if ("Ala ma kota 2".equals(str)) { ... } else {...}
1

Poza tym nie sprawdzasz, czy String ma dozwoloną wartość. Przechwytujesz jedynie IOException i zamiast niego wywalasz własny wyjątek. No i nie istnieje taki String, który jednocześnie jest ciągiem "R" i "M". Powinno być:

public String czytajWybor() throws BladS, IOException {
    String znaki = pobierzWybor();
    if ("R".equals(znaki) || "M".equals(znaki)) {
        return znaki;
    } else {
        throw new BladS("Dozwolona forma wyboru to R - rosnąco i M - malejąco.");
    }
}

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