Forum / Grundlagen des Programmierens / 1. Hausübung

1. Hausübung

hat schon jemand von euch das 2.Beispiel gelöst? ich schaffs iwi nicht dass das programm zu 100% funktioniert ^^ Ich hoffe ihr könnt helfen :D

beste Grüße

Gerhard ±0

Ich habs geschafft...wo steigst denn aus? ;) Bin zwar selber blutiger Beginner...aber vl kann ich dir helfen! ;) Prinzipiell hab ich das Beispiel aus While-Schleifen aufgebaut...mit Zählern die je nachdem wieviele Reihen/Spalten du hast herunterzählen und somit dann zum richtigen Ergebnis führen. Für die erste und die letzte "Symbolzeile" musst du dir denke ich 2mal die Variable, welche die Spaltenzahl vorgibt wegkopieren...dann sollte das eigentlich hinhauen.

Ognjen ±0

Scanner eingabe = new Scanner(System.in); char ascii; int reihen, spalten;

    System.out.print("Bitte geben Sie das gewünschte Symbol an: ");
    ascii = eingabe.next().charAt(0);
    System.out.print("Bitte geben Sie die Anzahl der Reihen an: ");
    spalten = eingabe.nextInt();
    System.out.print("Bitte geben Sie die Anzahl der Spalten an: ");
    reihen = eingabe.nextInt();

    for (int i = 0; i < spalten; i++) {
        if (i == 0 || i == (spalten - 1)) {
            for (int j = 0; j < reihen; j++) {
                System.out.print(ascii);
            }
        } else {
            System.out.println(" ");

        }
    }

also bei mir sieht das ganze so aus, das sieht schon mal gar nicht so schlecht aus aber ich weiß nicht wie ich die symbole links und rechts am rand einfügen kann :D

Gerhard ±0

Ich hab das denk ich ein bisschen aufwändiger gelöst... ich hab die Eingabe mit 3 verschiedenen Scannern gemacht...ändert aber eigentlich eh nix! ;) Also wie du die äußeren Zeichen einfügen kannst...

Der "Kern" muss ja leer bleiben. Ich hab das so gelöst das ich eine While Schleife gemacht hab...die so aussieht:

while (Anzahl_Reihen - 2 > 0){
int k = Anzahl_Spalten;
System.out.print(Verwendetes_Symbol);
while (k - 2 > 0){ System.out.print(" "); k = k-1;

Dann halt noch die Anzahl-reihen while schleife fertigschreiben...

vielleicht hilfts ja :D

Clemens +1

Wenn dus per for/if belassen willst:

for(i = 0; i < row; i++){ //Zeilenschleife i++ steht für i = i+1 (Postinkrement) schnellschreibweise.

            if(i == 0 || i == row-1){                    //Erste und letzte Zeile abfragen, da hier alternative Zeichnung
                                            
                  for(j = 0; j &lt; col; j++){              //Wenn zutrifft dieses print.
                
                          System.out.print(sym);         //For schleife geht die Spalten und und schreibt sym.
                          if(j == col-1){                //Am ende der letzten Spalte eine neue Zeile (col-1 da bei 0 initialisiert).
                          System.out.println();          //Neue Zeile.
                                         }
                                            } 
                                     }                  //Ende der If-Abfrage
            else{                           //Wenn ich mich nicht im ersten Fall befinde:
                
                System.out.print(sym);           // 1x sym ausgeben
                for(k = 0; k &lt; col-2; k++){      //Leerzeichen ausgeben und zwar col-2 mal (erste und letzte Spalte bleiben erhalten
                    System.out.print(&quot; &quot;);}     //Leerzeichen + ende for-Schleife 
                System.out.println(sym);        //1x sym ausgeben und neue Zeile
                
                }  //Ende else
Ognjen ±0

super, danke für die hilfe! ;)

Moustafa ±0

Kann vielleicht jemand von euch die Aufgabe 1_1 hohchladen, ich komm irgendwie ned drauf Aufgabe 1_3 habe ich geschafft mit Ausnahme, dass bei falscher eingabe er nicht wieder zum menüpunkt springt import java.util.Scanner; /* Klasse für das Einlesen von Zeichen */

public class Aufgabe1_3 {

public static void main(String[] args) {

    System.out.println(&quot;Willkommen im Begr&uuml;&szlig;ungsmen&uuml;!&quot;); /* Textausgabe*/
    System.out.println(&quot;Bitte w&auml;hlen Sie einen Men&uuml;punkt:&quot;); /* Textausgabe*/
    System.out.println(&quot;(D) Deutsch &quot;); /* Textausgabe*/
    System.out.println(&quot;(E) Englisch&quot;); /* Textausgabe*/
    System.out.println(&quot;(F) Franz&ouml;sisch&quot;); /* Textausgabe*/
    System.out.println(&quot;(I) Italienisch&quot;); /* Textausgabe*/
    System.out.println(&quot;(X) Beenden&quot;); /* Textausgabe*/

    Scanner Eingabe = new Scanner(System.in);

    char Language = Eingabe.next().charAt(0);

    switch (Language) {
        case 'D':  /* Lies&szlig; Zeichen D ein */
            System.out.println(&quot;Guten Tag!&quot;);
            break;  /* Schleife endet hier */

        case 'E':
            System.out.println(&quot;Hello!&quot;);
            break;

        case 'F':
            System.out.println(&quot;Bonjour!&quot;);
            break;
            
        case 'I':
            System.out.println(&quot;Buon giorno!&quot;);
            break;
            
        case 'X':
            System.out.println(&quot;Auf Wiedersehen!&quot;);
            break;
        
        
        default:
            System.out.println(&quot;keine g&uuml;ltige Eingabe&quot;);
            System.exit(0); /* R&uuml;ckgabecode 0=alles ok */
            
    }

 }

}

Ognjen +1

import java.util.Scanner;

public class Aufgabe1_1 {

public static void main(String[] args) {
    System.out.print(&quot;Bitte geben Sie die Anzahl der Wiederholungen an:&quot;);
    Scanner input = new Scanner(System.in);
    int count = 0;
    count = input.nextInt();
    System.out.print(&quot;Bitte geben Sie den Text ein:&quot;);
    String eingabe = null;
    eingabe = input.next();

    for (int i = 1; i &lt;= count; i = i + 1) {
        System.out.println(eingabe);
    }


}

}

bitte ;) ich glaube das dritte muss man mit einer while-schleife machen, habs aber selber noch nicht ;)

Clemens ±0

1.3 über do while. Da while eine kopfgesteuerte Schleife ist und das zu Problemen führen kann bei diesem Bsp. In die do while Schleife kommt dann ne switch Abfrage.

Gerhard ±0

Hätte wer einen Tipp für mich wie die Schleife beim 3ten Beispiel aussehen muss? ich komm und komm nicht drauf... es muss ja wohl eine do-while schleife sein oder? in do kommt die Ausgabe (System.out) und auch der Scanner rein und auch das gesamte Switch-case oder? aber was muss ich in mein while rein schreibn...? Da komm i ned drauf! Danke schon mal!!

Clemens ±0

In while kommt rein wie lange die Schleife laufen soll. Jetzt musst du dir überlegen wann die Schleife abbricht, und das ist der Fall wenn der User X eingibt.

Gerhard ±0

Danke...das war mir auch klar...nur wenn ich meine while schleife so baue das als "Abfrage" kommt while (Eingabe != 'X') ist leider auch nicht wirklich eine Besserung in sicht...da sagt er mir wieder das die Variable "Eingabe" gar nicht definiert ist...die hab ich aber vorher gescannt und für den switch case verwendet...ich steh da momentan wohl massiv auf der leitung :D

Ognjen ±0

naja ich habs so gemacht:

Scanner scanner = new Scanner(System.in); char Eingabe = scanner.next().charAt(0); switch(Eingabe) ....dann sollte es mit while(Eingabe != 'X') funktionieren :D

ich komm aber trotzdem nicht drauf wie ich es schaffe, dass das Begrüßungsmenü nochmal abgefragt wird, bei mir kommt nur eine endlosschleife mit Hallo's ^^

Gerhard ±0

ja...das funktioniert ja auch alles bei mir...die endlosschleife der Auswahlmöglichkeiten bring ich auch zam...nur das er das ganze schrittweise wiederholt halt leider nicht! ;)

Clemens ±0

.da sagt er mir wieder das die Variable "Eingabe" gar nicht definiert ist Ist aber eine Warnung und kein Fehler. Wenn du die Warnung nicht willst kannst du die Variable vor der do-while-Schleife deklarieren und initialisieren.

@ogi: Gib den output/input in die do-while schleife, dann wird das auch mitwiederholt. Wenn du nur die Switch-Verzweigung in der do-while Schleife hast wiederholt er auch nur die Switch-Verzweigung.

Ognjen ±0

@Nigel: wärst du vielleicht so freundlich und stellt das beispiel hier online? danke für deine hilfe!

Sorry, die Kommentarfunktion ist geschlossen.