Java :: Aufgabe #353

1 Lösung Lösung öffentlich

Figur zurück zum Ausgangspunkt

Anfänger - Java von JKooP - 02.04.2021 um 08:45 Uhr
Eine Figur bewegt sich auf einer 2D- Spielfläche (Koordinatensysteme). Dabei startet sie an der Position (0, 0).
Die Figur kann folgende Bewegungen im Einzelschritt durchführen: Right (R), Left (L), Up (U) und Down (D).
Anhand einer bestimmten Sequenz soll geprüft werden, ob sich die Figur am Ende wieder an der Ausgangsposition befindet.

Beispielsequenzen:
s = „UD“: Wahr
s = „LURD“: Wahr
s = „LLDD“: Falsch
s = „LLUUURDDRD“: Wahr
s = „LDRRLRUULR“: Falsch

Schreibe eine Methode/Funktion, die obige Aufgabenstellung realisieren kann.

Viel Spaß

Lösungen:

vote_ok
von CyoSplatoon (160 Punkte) - 18.05.2021 um 08:27 Uhr
Quellcode ausblenden Java-Code
import javax.swing.JOptionPane;

public class Task353 {

	public static void main(String[] args) {
		int posX = 0;
		int posY = 0;
		char[] a;
		
		do {
			a = JOptionPane.showInputDialog("Bitte geben Sie eine Abfolge von Bewegungszügen an: ").toUpperCase().toCharArray();
		} while (!validate(a));
		
		
		for (int i = 0; i < a.length; i++) {
			switch (a[i]) {
			case 'U':
				posY++;
				break;
			case 'D':
				posY--;
				break;
			case 'L':
				posX--;
				break;
			case 'R':
				posX++;
				break;
			}
		}
		
		if (posX == 0 && posY == 0) {
			JOptionPane.showMessageDialog(null, "Nullpunkt erreicht.");
			System.out.println(posX == 0 && posY == 0); // Konsolenoutput sollte in diesem Falle "true" sein.
		} else {
			JOptionPane.showMessageDialog(null, "Nullpunkt nicht erreicht.");
			System.out.println(posX == 0 && posY == 0); // Konsolenoutput sollte in diesem Falle "false" sein.
		}
	}

	private static boolean validate(char[] charArray) {
		for (int i = 0; i < charArray.length; i++) {
			switch (charArray[i]) {
			case 'U':
				break;
			case 'D':
				break;
			case 'L':
				break;
			case 'R':
				break;
			default:
				JOptionPane.showMessageDialog(null, "Validation fehlgeschlagen. Bitte nochmal versuchen.", "Fehler", 0);
				return false;
			}
		}
		return true;
	}
}
1800937

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.