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
Martin ±0

wie is des eig. mit der absicherung bei einer float zahl (wenn wer 1.5 eingibt statt 1,5??)

meine eingabe funktioniert im moment so:

is das falsch?
lg martin
Maximilian ±0

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:


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



kann mir jemand erklären was die Zeile "n=help"; in der ersten while Schleife bewirkt bzw. worfür ich sie brauche?
Georg ±0

@Martin, keine ahnung ob man ihm dise Unterscheidung beibringen kann aber wenn das bei dir funzt dann passt das auch :D

@digi kann ich, am ende der inneren schleife hat n den wert 0, d.h. n ist nicht mehr der anfangswert, deswegen sagt man vor beiden sch

Derya ±0

man ich habe schon bei der 2 Aufgabe Probleme :(... Frage bei der ersten Aufgabe da musste ich nachdem case den Buchstaben 'A' angeben. Bei den Zahlen aber nicht. Wieso werden Zahlen normal und Buchstaben unter ' ' geschrieben?

Maximilian ±0

@ Fieba: Danke, jetzt ist alles klar :D

Georg ±0

einfache überlegung, würdest du die ' oder im fall von strings " weglassen, erkennt java deine buchstaben als variabel, man könnte ja irgendwo eine variabel d definiert haben! dann würde die dort zum einsatz kommen, damit java aber eben versteht das es keine variable ist sondern ein eingelesener char oder string benötigt man die ' .

Bertram ±0
[2012S] 1. Hausübung, Beispiel 1.5

kann sich jemand bitte das programm durchschauen und mir ev helfen herauszufinden wo der fehler is???

Scanner eingabe=new Scanner(System.in);

final int E = 210;
        double I;
        double f;
        
                
                
        
        System.out.println("Bitte wählen Sie die passende Querschnittsform");
        System.out.println("Kreis [k]");
        System.out.println("Quadrat [q]");
        System.out.println("I-Träger [i]");
        
        //wenn "q" oder "i" gewählt
        String form=eingabe.next();
        if (form.equals("q")||form.equals("i"))
        {System.out.println("Bitte geben Sie die Seitenlänge in mm an");}        
        
        
        //wenn"k" gewählt
        if (form.equals("k"))
        System.out.println("Bitte geben Sie den Durchmesser in mm an.");
        
        //als variable "a" definieren
        double a=eingabe.nextDouble();
        
        //berechnung von I=Flächenträgkeit.
        
        //wenn q
        //I=a^4/12
        if (form.equals("q"))
        {I=("a^4/12");}  
        
            
        //wenn i
        //I=10a^4/144
        if (form.equals("i"))
        {I=("10a^4/144");} [COLOR=#FFFF00]->hier ist ein Fehler
        
        //wenn k
        //I=(a^4*pi)/12
        if (form.equals("k"))
        {I=(a^4*pi)/12;}  ->hier ist ein Fehler
        
        //abfrage der länge
        System.out.println("Bitte geben Sie die Länge in mm an");
        //als variable "l" definieren
        int l =eingabe.nextInt();
        
        
        //abfrage der kraft
        System.out.println("Bitte geben Sie die Kraft in N an");
        //als variable "F" definieren
        int F =eingabe.nextInt();
        
        //abfrage der Lagerungsart
        System.out.println("Bitte geben Sie die Art der Lagerung an");
        System.out.println("Beidseitig gelagert, Krafteinwirkung mittig [a]");
        System.out.println("Kragträger mit Last am Endpunkt [b]");
                
                
        //berechnung der Maximalen durchbiegung (f) durchbiegung
        String lagerung=eingabe.next();
        //wenn a
        //f=(F*l^3)/(48*E*I)
        if (lagerung.equals("a"))
        {f=(F*l^3)/(48*E*I);
            System.out.println("Die maximale Durchbiegung beträgt f");
        }
        //wie verweist man auf eine variable???
        
        //wenn b
        //f=(F*l^3)/(3*E*I)
        if (lagerung.equals("b"))
        {f=(F*l^3)/(3*E*I);
        System.out.println("Die maximale Durchbiegung beträgt f");
        }
\n~~~
Michael ±0

Java erkennt ^ nicht so einfach als Potenz. Du musst entweder aaa*a schreiben oder die Funktion math.pow(a,4) verwenden. Außerdem wird Java "pi" nicht als 3,14... erkennen, sondern als Variable

Bertram ±0

danke erst mal.

leider war das nur die halbe miete...

das andere is das er mir bei den besagten zeilen folgende Fehlermeldung ausgibt: incompadible types, required: double found: java.lang.string

was soll ich da ändern???

das andere betrifft {f=(Fl^3)/(48E*I); System.out.println("Die maximale Durchbiegung beträgt f"); }

hier berechnet er mir f nicht und gibt f nicht als Zahl in der System.out.println an. wie schreib ich das so dass er f als variable erkennt?

Michael ±0

Du musst die Anführungszeichen weglassen, sonst wird der Ausdruck als string interpretiert. I=("a^4/12"); ist falsch I=math.pow(a,4)/12; ist richtig

Damit math.pow funktioniert, musst du noch eine library importieren, und zwar java.lang.math

Zum zweiten: System.out.println("Die maximale Durchbiegung beträgt " + f); wäre richtig. Das steht übrigens in den VO-Folien der 2. VO drinnen, falls du nochmals nachschauen willst.

Bertram ±0

so, programm rennt, gibt mir aber nicht das richtige ergebnis. ich poste den ganzen schmafu noch mal in der hoffnung das irgendwer den fehlern findet...

Scanner eingabe=new Scanner(System.in);
        final int E = 210000;
        double I=0;
        double f;
        
      
        boolean i;
        do {
       
                
        
        System.out.println("Bitte wählen Sie die passende Querschnittsform");
        System.out.println("Kreis [k]");
        System.out.println("Quadrat [q]");
        System.out.println("I-Träger [i]");
        
        //wenn "q" oder "i" gewählt
        String form=eingabe.next();
        if (form.equals("q")||form.equals("i"))
        {System.out.println("Bitte geben Sie die Seitenlänge in mm an");}        
        
        
        //wenn"k" gewählt
        if (form.equals("k"))
        System.out.println("Bitte geben Sie den Durchmesser in mm an.");
        
        //als variable "a" definieren
        double a=eingabe.nextDouble();
        
        //berechnung von I=Flächenträgkeit.
        
        //wenn q
        //I=a^4/12
        if (form.equals("q"))
        {I=(Math.pow(a,4)/12);}
        
            
        //wenn i
        //I=10a^4/144
        if (form.equals("i"))
        {I=((10*Math.pow(a,4))/144);}
        
        //wenn k
        //I=(a^4*pi)/12
        if (form.equals("k"))
        {I=(Math.pow(a,4)*Math.PI)/12;}
        
        
        
        //abfrage der länge
        System.out.println("Bitte geben Sie die Länge in mm an");
        //als variable "l" definieren
        int l =eingabe.nextInt();
        
        
        //abfrage der kraft
        System.out.println("Bitte geben Sie die Kraft in N an");
        //als variable "F" definieren
        int F =eingabe.nextInt();
        
        //abfrage der Lagerungsart
        System.out.println("Bitte geben Sie die Art der Lagerung an");
        System.out.println("Beidseitig gelagert, Krafteinwirkung mittig [a]");
        System.out.println("Kragträger mit Last am Endpunkt [b]");
                
                
        //berechnung der Maximalen durchbiegung (f) durchbiegung
        String lagerung=eingabe.next();
        //wenn a
        //f=(F*l^3)/(48*E*I)
        if (lagerung.equals("a"))
        {f=(F*Math.pow(l,3))/(48*E*I);
            System.out.println("Die maximale Durchbiegung beträgt  " +f);
        }
        
        
        //wenn b
        //f=(F*l^3)/(3*E*I)
        if (lagerung.equals("b"))
        {f=(F*Math.pow(l,3))/(3*E*I);
        System.out.println("Die maximale Durchbiegung beträgt  " +f);
        }
        //abfrage ob noch mal berechnen
        System.out.println("Wollen sie die Berechnung noch ein mal starten? (J/N)");
       char entry=eingabe.next().charAt(0);
       if (entry=='J'||entry=='j')
           i=true;
       else i=false;
       
       
       
       }   
        while (i==true);
        
        
        
    


  }
\n~~~
Bertram ±0

hat sich erledigt, danke

Christoph ±0

Irgendwie check ich das nicht... Wie krieg ich es her, dass sich in Bsp 3 die Spaltenanzahl ändert? Mit der Zeilenanzahl hab ich keine Probleme...

Maximilian ±0

@ Kiri: Am besten du stellst den Code hier rein und wir suchen den Fehler ;)

Bang ±0

das ist der quellcode meiner 1. hü hf

Sorry, die Kommentarfunktion ist geschlossen.