Problem mit meinem Programm

M

Mareike.baumann

Mitglied
Hallo Leute stehe mit meinem Programm auf dem Schlauch ... kann mir jemand vielleicht sagen wie ich weiter machen kann.
Ich habe die Aufgabe bekommen mein geschriebenes programm einmal ein quadrat das von einem Scanner gelesen wird aus gibt und das gleiche für eine Raute ... nun ist meine Aufgabe diese beiden Programm zu einem zu verbinden und auszugeben sprich :

Es wird abgefragt ob quadrat oder eine Raute oder das programm beendet werden soll ... es soll dann eingegeben werden q für Quadrat, r für Raute und E zum beenden.... dann wie gross es sein soll bei der Raute nur mit geraden zahlen ... wenn man nun ein quadrat ausgibt soll grfagt werden "was nun" und je nachdem was man möchte beenden oder raute oder quadrat.

Mein problem ich lasse das Qauadrat ausgeben und möchte danach raute ausgeben springt es nicht weiter sondern gibt immernoch das Quadrat aus ... und den befehl zum beenden mit E konnte ich auch nicht einbinden mein kopf ist Matsch geworden würde mich über lösungen freuen, weil ich die nerven nicht mehr dazu habe hoffe ich kann mir jemand dabei helfen .... hier mein code ....::
____________________________________________________________________________________________________

import java.util.Scanner;
public class Übung {



static Scanner sc = new Scanner(System.in);

public static void main(String[] args) {
System.out.println("Geben Sie 'Q' für Quadrat und 'R' für Rauten ein und zum Beenden 'E' ein: ");
String Eingabe = sc.next();
char c = Eingabe.charAt(0);

while (c != 'E' || c != 'e'){
Beenden();
System.out.println("beenden!");
Eingabe = sc.close();

}



{

if (c == 'Q' || c == 'q') {
Quadrat();
System.out.println("Als Nächstes? ");
Eingabe = sc.next();
}

else if (c == 'R' || c == 'r') {
Raute();
System.out.println("Als Nächstes? ");
Eingabe = sc.next();
}
}
}

static void Quadrat() {
System.out.println("N =");
int n = sc.nextInt();

System.out.print("+");
for (int i = 1; i <= n - 2; i++) {
System.out.print("-");
}
System.out.print("+");

for (int a = 1; a <= n - 2; a++) {
System.out.println();
System.out.print("|");
for (int b = 1; b <= n - 2; b++) {
System.out.print(" ");
}
System.out.print("|");

System.out.println();
}
System.out.print("+");
for (int i = 1; i <= n - 2; i++) {
System.out.print("-");
}
System.out.print("+");
System.out.println();

}

static void Raute() {
Scanner eingabe = new Scanner(System.in);
System.out.print("Geben Sie N ein: ");
int n = eingabe.nextInt();

if (n > 0 && n!=0 && n%2==0) {

for (int i = 0; i <= n / 2 - 1; i++) {
for (int j = 0; j < (n / 2 - (i + 1)); j++) {
System.out.print(" ");
}
System.out.print("/");
for (int k = 0; k < (i * 2); k++) {
System.out.print(" ");
}
System.out.print("\\");
System.out.println();
}

for (int i = n / 2 - 1; i >= 0; i--) {
for (int j = 0; j < (n / 2 - (i + 1)); j++) {
System.out.print(" ");
}
System.out.print("\\");
for (int k = 0; k < (i * 2); k++) {
System.out.print(" ");
}
System.out.print("/");
System.out.println();
}
} else
System.out.println("Bitte eine gerade Zahl eingeben!");
}
}
 
mihe7

mihe7

Top Contributor
Bitte nächstes mal Code-Tags verwenden: [code=Java]Dein Code[/code] und den Code inkl. Einrückungen einfügen, dann erscheint das so schön wie hier:
Java:
import java.util.Scanner;

public class Übung {
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        System.out.println("Geben Sie 'Q' für Quadrat und 'R' für Rauten ein und zum Beenden 'E' ein: ");
        String Eingabe = sc.next();
        char c = Eingabe.charAt(0);

        while (c != 'E' || c != 'e'){
            Beenden();
            System.out.println("beenden!");
            Eingabe = sc.close();
        }

        {

            if (c == 'Q' || c == 'q') {
                Quadrat();
                System.out.println("Als Nächstes? ");
                Eingabe = sc.next();
            }
            else if (c == 'R' || c == 'r') {
                Raute();
                System.out.println("Als Nächstes? ");
                Eingabe = sc.next();
            }
        }
    }

    static void Quadrat() {
        System.out.println("N =");
        int n = sc.nextInt();

        System.out.print("+");
        for (int i = 1; i <= n - 2; i++) {
            System.out.print("-");
        }
        System.out.print("+");

        for (int a = 1; a <= n - 2; a++) {
            System.out.println();
            System.out.print("|");
            for (int b = 1; b <= n - 2; b++) {
                System.out.print(" ");
            }
            System.out.print("|");
            System.out.println();
        }
        System.out.print("+");
        for (int i = 1; i <= n - 2; i++) {
            System.out.print("-");
        }
        System.out.print("+");
        System.out.println();
    }

    static void Raute() {
        Scanner eingabe = new Scanner(System.in);
        System.out.print("Geben Sie N ein: ");
        int n = eingabe.nextInt();

        if (n > 0 && n!=0 && n%2==0) {

            for (int i = 0; i <= n / 2 - 1; i++) {
                for (int j = 0; j < (n / 2 - (i + 1)); j++) {
                    System.out.print(" ");
                }
                System.out.print("/");
                for (int k = 0; k < (i * 2); k++) {
                    System.out.print(" ");
                }
                System.out.print("\\");
                System.out.println();
            }

            for (int i = n / 2 - 1; i >= 0; i--) {
                for (int j = 0; j < (n / 2 - (i + 1)); j++) {
                    System.out.print(" ");
                }
                System.out.print("\\");
                for (int k = 0; k < (i * 2); k++) {
                    System.out.print(" ");
                }
                System.out.print("/");
                System.out.println();
            }
        } else 
            System.out.println("Bitte eine gerade Zahl eingeben!");
    }
}

Dann: in Java schreibt man Namen für Variablen, Parameter und Methoden in lowerCamelCase, Typnamen (Klassen & Co.) dagegen in UpperCamelCase. Das solltest Du Dir von Anfang an angewöhnen, da es das Lesen von Code stark erleichtert.

Zum Problem: der Code ist nicht übersetzbar. Die Methode Beenden() existiert nicht und sc.close() gibt auch keinen String zurück.

Unabhängig davon ist die Bedingung der Schleife
Java:
        while (c != 'E' || c != 'e'){
            Beenden();
            System.out.println("beenden!");
            Eingabe = sc.close();
        }
immer wahr (c ist entweder kein 'E' oder kein 'e' oder weder noch).

Du kannst den Scanner wiederverwenden (brauchst also nicht in jeder Methode einen neuen anzulegen).
 
M

Mareike.baumann

Mitglied
ok, vielen Dank für die schnelle Antwort .... ich habe nun
Java:
while]  (c == 'E' || c == 'e'){
         
            System.out.println("beende Programm!");
         
        }

geändert ... und wie mache ich das mit dem sc.close ... ich möchte E eingeben in den Scanner und den String beenden nur da ich leider Java anfänger bin fällt das mir ziemlich schwer, weswegen ich mich hier an die Gurus wende ....
 
mihe7

mihe7

Top Contributor
Also mal langsam: Du möchtest eine Schleife, die so lange läuft, so lange der eingegebene Buchstabe weder ein 'e' noch ein 'E' ist. D. h. c darf kein 'E' UND außerdem kein 'e' sein: c != 'E' && c != 'e'.

Dann möchtest Du innerhalb der Schleife unterscheiden, ob ein 'q' ('Q') bzw. 'r' ('R') eingegeben wurde. Das hast Du im Prinzip schon - nur nicht in der Schleife:

Java:
while (c != 'E' && c != 'e') {
    if (c == 'q' || c == 'Q') {
        ...
    }
    else if (c == 'r' || c == 'R') {
        ...
    }
}

Die Schleife wird also beendet, wenn ein 'e' oder 'E' eingegeben wurde, d. h. nach der Schleife kannst Du das Programm beenden. Das funktioniert automatisch, weil ja keine weiteren Anweisungen mehr kommen.

Ein weiteres Problem besteht aber noch: wenn weder ein 'q' ('Q') noch ein 'r' ('R') eingegeben wurde, dann wird vom Benutzer keine neue Eingabe verlangt und das Programm landet in einer Endlosschleife :-(

Also stellst Du die Eingaben noch ein wenig um:
Java:
while (c != 'E' && c != 'e') {
    if (c == 'q' || c == 'Q') {
        quadrat();
    } else if (c == 'r' || c == 'R') {
        raute();
    }
    System.out.println("Als nächstes? ")
    eingabe = sc.next();
    c = eingabe.charAt(0);
}

Theoretisch müsstest Du noch abfangen, ob eingabe nicht leer ist, denn dann würde charAt(0) eine Exception auslösen.
 
M

Mareike.baumann

Mitglied
Würde auch
Java:
while (!eingabe.equals("e")) {

(eingabe.equals("Q") || eingabe.equals("q"))

funktionieren? finde es mit eingabe.equals viel einfacher ?!
und wenn ich das so übernehme gibt es was , auf das ich achten sollte??
 
X

Xyz1

Gast
Das wäre möglich:
Java:
import java.util.Scanner;

public class Übung {
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        System.out.println("Geben Sie 'Q' für Quadrat und 'R' für Rauten ein und zum Beenden 'E' ein: ");
        String eingabe = sc.nextLine().toLowerCase();

        while (!eingabe.equals("e")) {
            if (eingabe.equals("q")) {
                quadrat();
            } else if (eingabe.equals("r")) {
                raute();
            }

            System.out.println("Geben Sie 'Q' für Quadrat und 'R' für Rauten ein und zum Beenden 'E' ein: ");
            if (sc.hasNextLine()) { // there could be a problem, if its called after next integer...
                sc.nextLine();
            }
            eingabe = sc.nextLine().toLowerCase();
        }
    }

    static void quadrat() {
        System.out.println("N =");
        int n = sc.nextInt();

        System.out.print("+");
        for (int i = 1; i <= n - 2; i++) {
            System.out.print("-");
        }
        System.out.print("+");

        for (int a = 1; a <= n - 2; a++) {
            System.out.println();
            System.out.print("|");
            for (int b = 1; b <= n - 2; b++) {
                System.out.print(" ");
            }
            System.out.print("|");
            System.out.println();
        }
        System.out.print("+");
        for (int i = 1; i <= n - 2; i++) {
            System.out.print("-");
        }
        System.out.print("+");
        System.out.println();
    }

    static void raute() {
        System.out.print("Geben Sie N ein: ");
        int n = sc.nextInt();

        if (n > 0 && n != 0 && n % 2 == 0) {

            for (int i = 0; i <= n / 2 - 1; i++) {
                for (int j = 0; j < (n / 2 - (i + 1)); j++) {
                    System.out.print(" ");
                }
                System.out.print("/");
                for (int k = 0; k < (i * 2); k++) {
                    System.out.print(" ");
                }
                System.out.print("\\");
                System.out.println();
            }

            for (int i = n / 2 - 1; i >= 0; i--) {
                for (int j = 0; j < (n / 2 - (i + 1)); j++) {
                    System.out.print(" ");
                }
                System.out.print("\\");
                for (int k = 0; k < (i * 2); k++) {
                    System.out.print(" ");
                }
                System.out.print("/");
                System.out.println();
            }
        } else {
            System.out.println("Bitte eine gerade Zahl eingeben!");
        }
    }
}


Nebenbei sei angemerkt ich finde die Raute schön. :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
JeromeM90 Problem bei meinem Programm : Lottozahlen Java Basics - Anfänger-Themen 30
megachucky Problem bei meinem Videothek-Programm Java Basics - Anfänger-Themen 5
N Problem bei meinem Code Java Basics - Anfänger-Themen 10
F Methoden Kleines Problem mit meinem Glücksrad... Java Basics - Anfänger-Themen 9
D Problem mit meinem ersten JOptionPane - Fatal exception occurred. Program will exit. Java Basics - Anfänger-Themen 6
S Ich habe ein kleines Problem mit meinem Übungsprogramm Java Basics - Anfänger-Themen 7
G Was is falsch mit meinem program? (stringvergleich-problem) Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
S Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
L Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
F Problem mit Listen Java Basics - Anfänger-Themen 5
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1
J Problem bei Umrechnung von Hex in Bin Java Basics - Anfänger-Themen 4
W Problem bei Programmierung von Monte-Carlo-Integration Java Basics - Anfänger-Themen 12
C Java Methoden "Parameter" Problem Java Basics - Anfänger-Themen 16
T Bruchrechner Problem Java Basics - Anfänger-Themen 16
pkm Problem mit der JSP-Syntax Java Basics - Anfänger-Themen 2
J Rückgabe-Problem Java Basics - Anfänger-Themen 10
D Problem mit der Serialisierung Java Basics - Anfänger-Themen 31
W Problem mit dem Wert von boolean-Variable Java Basics - Anfänger-Themen 3
W Problem mit Konsolenausgabe bei StringTokenizer Java Basics - Anfänger-Themen 2
O Verständniss Problem bei abstract class Java Basics - Anfänger-Themen 7
K Java Problem mit Übergabe von argumenten Java Basics - Anfänger-Themen 3
J "travelling salesman problem" mit Java Editor Java Basics - Anfänger-Themen 17
M Problem mit ArrayList Java Basics - Anfänger-Themen 32
B Array Problem Java Basics - Anfänger-Themen 3
O Problem mit SOAP / javax.xml importieren Java Basics - Anfänger-Themen 7
V Variablen Problem mit Matheaufgabe / int first = mScanner.nextInt(); Java Basics - Anfänger-Themen 5
X Problem mit Arraylist in Arraylist Java Basics - Anfänger-Themen 2
cpt.Tomato Scanner problem mit Passwort Login Java Basics - Anfänger-Themen 3
F Switch Case Problem mit Regex lösen? Java Basics - Anfänger-Themen 6
CT9288 Mini Anfänger-Problem mit loops, statements und ; Java Basics - Anfänger-Themen 4
C Two-Center Problem in Java Java Basics - Anfänger-Themen 0
H regex-Problem Java Basics - Anfänger-Themen 2
J Problem bei seriellem Start von Threads Java Basics - Anfänger-Themen 11
E Weg-Suche-Problem rekursiv Java Basics - Anfänger-Themen 12
C Problem: PC ohne Internet und keine Möglichkeit Programme zu laden Java Basics - Anfänger-Themen 5
E Problem mit static Methode Java Basics - Anfänger-Themen 4
J Problem bei Aufgabe "Geldstückelung" Java Basics - Anfänger-Themen 5
P Problem bei Java-Aufgabe Java Basics - Anfänger-Themen 12
T Rückgabewert Problem Java Basics - Anfänger-Themen 2
O Problem gleiche Zahlen Java Basics - Anfänger-Themen 2
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
W Problem bei JUnit Test Aufgabe Java Basics - Anfänger-Themen 15
D Break Sprungmarken Problem einer While True in While True Java Basics - Anfänger-Themen 6
J "Tetris" - Problem bei der Grafik Java Basics - Anfänger-Themen 5
L Klassen NFC Reader und JavaFx Problem -> threads? Java Basics - Anfänger-Themen 2
C Hamster Simulator Problem Java Basics - Anfänger-Themen 2
S CSV auslesen UTF-8 Problem Java Basics - Anfänger-Themen 7
F Problem beim entfernen von mehreren Listenelementen auf einmal (Programmierung des Spiels Arschloch) Java Basics - Anfänger-Themen 1
felix92 eclipse Problem Java Basics - Anfänger-Themen 12
J unzip Problem Java Basics - Anfänger-Themen 5
J Pizza und Pasta Problem.. Java Basics - Anfänger-Themen 19
F Problem mit der Aufgabe(Array) Java Basics - Anfänger-Themen 21
X Erste Schritte Problem mit scanner Java Basics - Anfänger-Themen 2
J GUI-Problem Java Basics - Anfänger-Themen 4
C Problem mit der Aufgabe Java Basics - Anfänger-Themen 3
L Problem mit Android ListView Java Basics - Anfänger-Themen 2
J String Problem kann das einer erklären Java Basics - Anfänger-Themen 13
R Schaltjahr problem Java Basics - Anfänger-Themen 10
S Doppel For Schleife mit Arrays - Problem bei der Ausgabe Java Basics - Anfänger-Themen 4
R Problem mit Code Java Basics - Anfänger-Themen 3
scitex Problem mit JFormattedTextField Java Basics - Anfänger-Themen 2
D Problem mit Installation von JRE Java Basics - Anfänger-Themen 2
_0815_ Problem mit dem Automatischen eintragen in Textdateien Java Basics - Anfänger-Themen 1
L PROBLEM! "Bug" bei Konto-Projekt! Java Basics - Anfänger-Themen 7
H boolean Array Problem Java Basics - Anfänger-Themen 7
javajoshi Problem mit zwei Threads und Arrays (Runnable) Java Basics - Anfänger-Themen 12
M Textfield Problem Java Basics - Anfänger-Themen 2
S Rekursives Problem.... Java Basics - Anfänger-Themen 16

Ähnliche Java Themen

Anzeige

Neue Themen


Oben