do/while Schleife + scanner

Birk

Mitglied
Bin noch ziemlich am Anfang und komme bei einer do while Schleife nicht weiter. Ich schreibe ein Programm mit dem man Flächen berechen kann. Die Schleife soll sich wenn der Benutzer den Buchstaben n eingibt sich nicht mehr wiederholen. Das funktioniert soweit ganz gut, zumindest wenn man am Anfang n eingibt. Wenn aber die Frage nach noch einer Fläche gestellt wird, kann keine Variable mehr gesetzt werden, so ist es also egal was man eingibt. Kann mir jemand helfen ?🙂

Aufgabenstellung:
Nun erfolgt die Wahl des Flächentyps (Grundstück oder Straße).
 Legen Sie eine do-while-Schleife an, die solange durchlaufen werden soll, solange der Nutzer die
Frage nach einer weiteren Fläche mit „j“ (ja) beantwortet!
 Fragen Sie innerhalb der Schleife den Benutzer des Programms, welchen Flächentyp er hinzufügen
möchte.
 Werten Sie die Antwort des Benutzers aus, indem sie mittels einer Verzweigung prüfen, ob der
Nutzer ein „g“ (Grundstück) oder ein „s“ (Straße) eingegeben hat.
Java:
package BelegTeilA;

import java.util.Scanner;




public class Flaechenberechnung {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("Möchten sie eine Fläche berechnen?: ");
		String ja = sc.next();
		char b = (char) ja.charAt(0);
		System.out.println("Bitte geben sie den Flächentyp an: ");
		String g = sc.next();
		char h = (char) g.charAt(0);
	    
	    do {
	    	
	    	System.out.println("Noch eine Fläche?: ");
	    	String l = sc.next();
	    	char m = (char) l.charAt( 0);
	    
	         } while (b != 'n' | m != 'n');
		
		System.out.println("  " +h);
 
Zuletzt bearbeitet von einem Moderator:
überleg doch am besten nochmal was du alles wiederholen möchtest, also was alles innerhalb der schleife gehört.
also für mich erfüllt deine lösung noch keine der o.g. aufgabenpunkte.

Aufgabenstellung:
Nun erfolgt die Wahl des Flächentyps (Grundstück oder Straße).
 Legen Sie eine do-while-Schleife an, die solange durchlaufen werden soll, solange der Nutzer die
Frage nach einer weiteren Fläche mit „j“ (ja) beantwortet
!
 Fragen Sie innerhalb der Schleife den Benutzer des Programms, welchen Flächentyp er hinzufügen
möchte.
 Werten Sie die Antwort des Benutzers aus, indem sie mittels einer Verzweigung prüfen, ob der
Nutzer ein „g“ (Grundstück) oder ein „s“ (Straße) eingegeben hat.
 
In einer Schleifenbedingung dürfen nur Werte relevant sein, die auch zur Schleifenlaufzeit geändert werden können.
==> Warum also :
Code:
b!='n'
in der Schleifenbedingung? b wird nur einmal vor der Schleife gesetzt. Wenn da was anderes als 'n' drinsteht, läuft die Schleife ewig.
 
Ich hab viel ausprobiert, mir fehlt noch das Verständnis. D.h. die Variablen können nur VOR und NACH der Schleife verändert werden ? Aber genau da liegt mein Problem. Ich will ja durch eine Schleife die Abfrage nach weiteren Flächen so lange fortführen bis ein "n" für nein eingegeben wird. Ist das grundsätzlich nicht möglich oder liege ich einfach in meiner Vorgehensweise falsch?
 
das ist schon möglich 🙂. das soll aber nicht solange laufen wie != n sondern solange wie == j. das ist schonmal ein unterschied. mach dir doch am besten eine hilfmethode, die dir das etwas vereinfacht:

Java:
import java.util.Scanner;

public class Flaechenberechnung {

	private static Scanner scn = new Scanner(System.in);
	
	public static void main(String[] args) {
		do {
			char input = nextChar("Flächentyp (g/s)> ");
			// Hier kommt deine Verzweigung
		} while (nextChar("Noch ein Flächentyp? (j/n)> ") == 'j');
	}
	
	private static char nextChar(String prompt) {
		System.out.print(prompt);
		return scn.next().charAt(0);
	}
}

edit: die dir die das... ist bereits spät 😀
 
Zuletzt bearbeitet:

Zurück
Oben