Forum / Grundlagen des Programmierens / 1. Hausübung

1. Hausübung

Ok, ich habe eine relativ einfache Frage zur Aufgabe 1.3. Man soll dort mit Hilfe von Schleifen ein rechteckmuster erzugen. Mein Programm hat aber einen kleinen Fehler.

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Geben Sie bitte ein Zeichen ein:");
        String str = sc.nextLine();
        System.out.println("Geben Sie die Anzahl der Spalten ein:");
        int i = sc.nextInt();
        System.out.println("Geben Sie die Anzahl der Zeilen ein:");
        int n = sc.nextInt();
      while (i > 0) {
      while (n > 0) {System.out.print(str); System.out.println(str);
      
      i--;n--;
                  }
\n~~~

Das ist mein aktueller Programmcode den ich verwende. Habe das Programm folgendermasen gerunt:
Geben Sie bitte ein Zeichen ein:
x
Geben Sie die Anzahl der Spalten ein:
5
Geben Sie die Anzahl der Zeilen ein:
7
xx
xx
xx
xx
xx
xx
xx

wo liegt hier mein Fehler im Code? so kompliziert is das gar neda ber mir fällt keine lösung grad ein bin für jede HIlfe dankbar
Michael ±0

naja gut es is vltn bissl blöd zu sagen, dass ich keinen quellcode will. das problem bei mir besteht hauptsächlich darin, dass ich eben die befehle ned kenn um ne methode neu aufzurufen. wie ich ne schleife basteln soll seh ich ja im internet, aber ich hab dann oft das problem , dass ich ned weiss was ich für befehle reinwerfen darf und welche ned, bzw welche arten an befehlen es überhaupt gibt. ich guck zwar immer mit alt+leertaste was er mir alles vorschlägt, aber helfen tuts auch nur selten :/ . und jetz steh ich eben da, die HÜ sagt ich solls mit ner if schleife machen und ich hab ein schema im kopf ca so:

Scanner eingabe_sc = new Scanner(System.in); char eingabe = eingabe_sc.next().charAt(0);

if(eingabe == Y) { ...befehl um BMI messung erneut durchlaufen zu lassen .. } else { System.out.println("Tschüss"); System.exit(0); }

hoff es isn bissl verständlicher worans hapert bei mir sry :/

Georg ±0

an den begrifflichkeiten :D den, dann wüsstest du das eine methode nicht direkt ein befehl ist. Ich nehm einfach mal an du hast keine ahnung was eine methode ist und ich dir damit eigenltich sagen wollte (is ned böse gemeint wusste das vorher auch nicht). Bezüglich methoden geb ich dir mal das nette video hier mit: http://www.youtube.com/watch?v=fqJtHuRAAZE das erklärt was eine methode ist und wie man eine methode erstellt, und aufruft. der grobzug deines programms lautet also in der schleife: if (eingabe == Y) {methodebmiberechnung} else .... bei der position der if schleife ist wichtig, das sich die methode wieder selbst aufruft. damit du wießt wo du sie im programmcode stehen haben solltest hoffe dir damit ein wenig geholfen zu haben. wenn nicht kann ih dir mal grob schreiben wie das aussehen sollte.

Daniel Sebastian ±0

Sollte beim zweiten Bsp. die BMI berechnung in einer extra Methode erfolgen oder kann dies in der main methode erfolgen(sprich man hat 2 methoden, main und z.B: bmirechner)? Finde nämlich die Angabe ein wenig verwirrend :D

Martin ±0

Hallo Leute, meine Lösung zu 1.2: Denkt ihr dass so was als "Verwendung der if/else Struktur" zählt? :D

Danke :)

package bmi;
import java.util.Scanner; //import

public class Bmi {

 public static void main(String[] args) 
  {
   boolean nochmals = true;
     
   do 
    {
     System.out.println("Willkommen zum BMI-Rechner!\nGeben Sie bitte Ihr Gewicht in Kilogramm an.");
     Scanner zahlen = new Scanner(System.in);
      float gewicht = zahlen.nextFloat();
     System.out.println("Jetzt geben Sie bitte Ihre Körpergröße in Meter an.");
      float groesse = zahlen.nextFloat();
     
     System.out.println("Ihr BMI hat den Wert von " + bmi(gewicht, groesse) + ".\n Wollen Sie den Vorgang nochmals wiederholen? (Y/N)");
     Scanner janein = new Scanner(System.in); //float+string kann man mit einem scanner nicht lesen
     char antwort = janein.nextLine().charAt(0);
     
     if (antwort == 'Y') nochmals = true;
     else nochmals = false;
    }
     while(nochmals == true); 
  }
 public static float bmi(float kg, float m)
  {
   float bmi = kg/(m*m);
   return bmi;
  }
}

\n~~~
Georg ±0

denke man kanns so verwenden weiß es aber nicht, die angabe sagt tatsälich leider nicht klar aus was sie als methode haben will, ob das die reine berechnung oder auch das erneute eingeben ist wird ned klar. das was ich bi sjetzt als hinweise gegeben hab lsagt das die methode die ganze eingabe ect. ist^^ glaube das hier ein wenig spielraum ist, werde aber mal nen tutor fragen ob der das weiß obwohl tutoren wenn die os wie in cad sind au ned wirklih ahnung haben wie es der prüfer will :D

Florian ±0

@Daniel: Brauchst keine extra Methode machen, kannst alles in die Main-Methode schmeißen.

lg flo

Georg ±0

coffeeholic, das is so ned rihtig, insgesamt sollte mindestens 2 methoden schon vorhanden sein, da von der aufgabenstellung verlangt ist das man für die bmi berechnung eine methode erstellt, man könnte natürlih das programm auch nur in main schreiben udn als endlosshleife laufen lassen, das ist jedoch von der angabe ned gefordert

Florian ±0

Ich oute mich dann mal gleich als der Tutor vom Rep. Hallo!

Der letzte Punkt beim BMI Beispiel mit der Methode hätte eigentlich raus gehört, da ja Methoden erst diese Woche durchgenommen werden. Es wird hoffentlich für die meisten kein Beinbruch sein, dass der Satz drinnengeblieben ist. Bis zum Abgabegespräch müsst ihr ja sowieso wissen was eine Methode ist, weiters werden Methoden am Mittwoch vorgestellt. Sorry, hab ich beim umstellen der Hausübungsbeispiele übersehen (Die Stoffreihenfolge hat sich dieses Jahr "etwas" geändert.).

Die Endlosschleife ist im übrigen dadurch gefordert, dass das Programm nach jeder Berechnung fragen soll, ob es eine neue Berechnung starten soll oder nicht.

lg flo

Georg ±0

ich verstehe ein infiltrant fg ok dann muss ich tatsächlich nachfragen wenn ih jetzt schon die möglichkeit habe, soll man die endlosschleife als rekursive schleife in ner if anweisung machen oder soll man eine endlosschleife mit z.b. while erstellen und das if wird sozusagen nur als überprüfung genommen. (hoffe der unterschied ist klar, also einmal hab ihc nur eine if else anweisung drinnen und definiere eine rekursive schleife und beim anderen hab ih eine while schleife z.b. die für einen wert true ist und das if überprüft nur ob der wert immer noh true ist) was ich meint emit nicht gefordert, das man alles in eine methode schreibt, endlosschleife widersprech ih ja gar ned^^

und wenn du schon da bist hab ich noch eine frage bezüglich beispiel 3, wie habt ihr/du euch das vorgestellt? das die drei schleifen nacheinander ablaufen müssen oder jede für sich ablaufen muss oder wie stellt ihr euch das vor? das man ne swith case struktur macht und sagt die do schleife abspielen? p.s. wie funzt das hochladen? wenn ih das wie in der beschreibung mache hab ich zwar ne jar datei, hab die bei mir aber mal auf meinen zweiten laptop gelegt und der kann damit nix anfangen, kann die nicht einlesen steht war executable jar datei (oder java datei) dabei aber es passiert nix wie soll das aussehen oder bin ich nur zu doof dafür :D

Florian ±0

Wie du die Schleife löst ist dein Ding, du solltest wissen wie es funktioniert und die Übersicht über den Code haben. Ich persönlich bevorzuge die while schleife mit einem boolean der bei Bedarf auf false gestellt wird. Ist einfach einfacher. Rekursion kommt dann eh explizit zur 3. Hausübung (soviel kann ich verraten), spare dir also noch deine Kräfte ;)

Bei Beispiel drei machst du am besten einfach drei Klassen (so wie im Repetitorium) und schreibst in jede eine Lösung rein. Alle drei Klassen in ein Package und das Projekt (und somit das Jar-File) bleibt übersichtlich.

Das hochladen funktioniert wie jede andere TUWEL Abgabe auch, es gibt einen Dialog in dem man sein fertiges Jar-File hochlädt und den Rest übernimmt TUWEL. Ich mache noch ein kleines Video zu dem Thema in den Osterferien, derzeit komme ich einfach nicht dazu.

lg flo

P.S.: Ich bin ja auch nur ein ganz normaler (Langzeit-)Student, also keine Angst. Und so wie es derzeit im TUWEL Forum ausschaut kann ich hier wohl mehr helfen ;)

Georg ±0

ich verstehe bin aber zu faul das jetzt nochmal umzuändern :D ah ok ja gut 3 klasen 1 package is leichter, dachte das muss in eine klasse rein bassd, solang das video vorm 18.04. online ist kannst dir zeit lassen :D

kann man eigenltich auch ganze arrays an methoden übergeben die methode rechnen lassen und das wieder zurückgeben lassen? würde das gerne in beispiel 4 verwursteln, ein einfaches ja das geht würd mir da erstmal reichen dann versuch ich da rumzubasteln

Florian ±0

Ja, das geht. Sogar recht einfach.

Alexander ±0
Beispiel 1.1

Have fun with it ;)

import java.util.Scanner;

public class Beispiel_11 {
    
    public static void main(String[] args) {

        System.out.println("Hello! Please choose a language.");
        System.out.println("Deutsch (D)");
        System.out.println("Englisch (E)");
        System.out.println("Latein (L)");

        Scanner scanner = new Scanner(System.in);

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

        switch (Language) {
            case 'D':
                System.out.println("Hallo Welt!");
                break;

            case 'E':
                System.out.println("Hello World!");
                break;

            case 'L':
                System.out.println("Salve, munde!");
                break;

            default:
                System.out.println("Holy Guacamole, something went wrong!");
                System.exit(0);
                break;
        }

     }
 }
\n~~~

PS: Code könnt ihr einfach erzeugen indem ihr ~~~\n~~~\nhere goes your code\n~~~\n~~~ schreibt oder in der erweiterten Ansicht (Button 'Erweitert') euren Code markiert und auf die Raute (Hashtag :D) klickt.

Grüße
Alex
Ghostrider ±0

[QUOTE=coffeeholic;2483]@Daniel: Brauchst keine extra Methode machen, kannst alles in die Main-Methode schmeißen.

lg flo

Im Tuwel Forum steht wieder, dass sich die Berechnung in einer eignen Methode befinden soll mit Rückgabewert BMI.

Kann ichs jetzt in der Main Methode lassen oder nicht? Lg

Georg ±0

das hängt vermutlich von deinem prüfer ab :D ich rate dir einfach machs und gutist^^

Sorry, die Kommentarfunktion ist geschlossen.