Sind die while-Schleifen richtig in for-Schleifen ersetzt worden?

C

Cloooud

Mitglied
Heey,

wie du oben schon lesen kannst, muss ich die while-Schleifen im Programm in for Schleifen umändern ohne den Programmablauf zu ändern.

Ich habe etwas Schwierigkeiten damit und hoffe, dass mir jemand Tipps geben kann, was ich noch verändern muss

Danke im Voraus!



Was wird getestet? Eingabe Resultat
ReLoop.main(null); 3 Pyramidenhoehe:
**
****
******

ReLoop.main(null); 5 Pyramidenhoehe:
**
****
******
********
**********
Java:
public class ReLoop {
    public static void main(String[] args) {
        int height = Terminal.askInt("Pyramidenhoehe:\n");
        int i = 1;
        while(i <= height) {
            int j = 0;
            while(j < height-i) {
                Terminal.print(" ");
                j++;
            }
            j = 0;
            while(j < i*2) {
                Terminal.print("*");
                j++;
            }
            Terminal.print("\n");
            i++;
        }
    }



Das geänderte Programm:


Java:
public class Reloop
public static void main(String[] args) {
 int height = Terminal.askInt("Pyramidenhoehe:\n");
 for(int i=1;i<=height;i++){
            int j = 0;
            for(int j=0;j<height-1;j++)Terminal.print(" ");
            for(int j=0;j<i*2;j++)Terminal.print("*");
            Terminal.print("\n");
 }}
 
L

LimDul

Top Contributor
Sieht gut aus. Was passiert denn, wenn du die Programme ausführst? Da wäre so der erste Test, den ich an deiner Stelle machen würde.
 
C

Cloooud

Mitglied
Sieht gut aus. Was passiert denn, wenn du die Programme ausführst? Da wäre so der erste Test, den ich an deiner Stelle machen würde.
Erstmal Dankeschön!
Wenn ich das ausführe erscheinen mir paar Fehler wegen dem "Terminal" und wegen dem "j" die da stehen.
Also das, weiß aber nicht, wie ich das jetzt beheben oder verändern kann...

Java:
javac /tmp/ET4LSWwGwT/Reloop.java
/tmp/ET4LSWwGwT/Reloop.java:3: error: cannot find symbol
int height = Terminal.askInt("Pyramidenhoehe:\n");
              ^
  symbol:   variable Terminal
  location: class Reloop
/tmp/ET4LSWwGwT/Reloop.java:6: error: variable j is already defined in method main(String[])
            for(int j=0;j<height-1;j++)Terminal.print(" ");
                    ^
/tmp/ET4LSWwGwT/Reloop.java:6: error: cannot find symbol
            for(int j=0;j<height-1;j++)Terminal.print(" ");
                                       ^
  symbol:   variable Terminal
  location: class Reloop
/tmp/ET4LSWwGwT/Reloop.java:7: error: variable j is already defined in method main(String[])
            for(int j=0;j<i*2;j++)Terminal.print("*");
                    ^
/tmp/ET4LSWwGwT/Reloop.java:7: error: cannot find symbol
            for(int j=0;j<i*2;j++)Terminal.print("*");
                                  ^
  symbol:   variable Terminal
location: class Reloop
/tmp/ET4LSWwGwT/Reloop.java:8: error: cannot find symbol
            Terminal.print("\n");
            ^
 
kneitzel

kneitzel

Top Contributor
Das wird aber dann doch im anderen Programm auch schon der Fall gewesen sein, oder?

Beim Anpassen von Legacy Code (So schimpft man Code manchmal, den man anpassen muss weil er neuen Gegebenheiten nicht entspricht) ist der erste Schritt immer, dass man sicher stellt, dass sich dieser wie gewohnt übersetzen lässt.

Bezüglich des Fehlers: Vermutlich verwendet Ihr irgend eine Terminal Klasse in euren Übungen. Diese musst Du natürlich auch einbinden. Also ggf. fehlt nur eine import Anweisung oder ihr kopiert die Klasse immer so dazu oder oder oder ....
 
kneitzel

kneitzel

Top Contributor
Der Zweite Fehler besagt, dass Du ja schon eine lokale Variable j hast. (int j = 0;), daher kannst Du keine zweite lokale Variable j nennen.

Hier solltest Du also schlicht diese eine Zeile raus löschen, damit du nur noch die lokale Variable j mit Gültigkeitsbereich der jeweiligen for Schleife hast.
 
C

Cloooud

Mitglied
Ja das stimmt, war auch da schon ein "Problem", also ich habe jetzt nicht genau verstanden, wie ich das zu ersetzen habe... und mit löschen der Zeile meinst du die Zeile "int j = 0"?
Der Zweite Fehler besagt, dass Du ja schon eine lokale Variable j hast. (int j = 0;), daher kannst Du keine zweite lokale Variable j nennen.

Hier solltest Du also schlicht diese eine Zeile raus löschen, damit du nur noch die lokale Variable j mit Gültigkeitsbereich der jeweiligen for Schleife hast.
 
C

Cloooud

Mitglied
Java:
public class Terminal {
public static void main(String[] args) {
 int height = Terminal.askInt("Pyramidenhoehe:\n");
 for(int i=1;i<=height;i++){
            
            for(int j=0;j<height-1;j++)System.out.print(" ");
            for(int j=0;j<i*2;j++)System.out.print("*");
            System.out.print("\n");
 }}}

Ah okay Danke und das "Terminal.askInt" muss ich leider auch noch umändern, bei den anderen habe ich "System.out.print" geschrieben, aber da hier nach etwas gefragt wird bin ich mir gerade nicht sicher was ich hier hinschreiben soll
 
kneitzel

kneitzel

Top Contributor
Also da wäre meine Vermutung, dass ihr da irgendwas an die Hand gegeben bekommen habt, das ihr verwenden sollt.

Ansonsten nutze einfach erst einmal folgende Klasse für Dein aktuelles Projekt:
Java:
import java.util.Scanner;

public class Terminal {
    private static Scanner scanner = new Scanner(System.in);
    
    public static int askInt(String msg) {
        System.out.println(msg);
        return scanner.nextInt();
    }
}

(Jetzt so aus dem Kopf geschrieben, aber als erstes Minimum sollte es erst einmal funktionieren.)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Wie kann ich Werte die in einer While Schleife sind weiter genutzt werden? Java Basics - Anfänger-Themen 7
T Wie vergleiche ich die Jahre aus der while Schleife die in ( public class) fuer cbx geschrieben sind Java Basics - Anfänger-Themen 5
S Sind unten stehende Anweisungen kompilierbar? Java Basics - Anfänger-Themen 7
UnknownInnocent Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
mhmt_03 dafür sorgen, dass im JTextfield nur zahlen eingebbar sind Java Basics - Anfänger-Themen 9
M Warum werden character, die Leerzeichen sind, nicht korrekt verarbeitet? Java Basics - Anfänger-Themen 2
M Scannen von *.txt - Dateien; wo sind der oder die Fehler? Java Basics - Anfänger-Themen 4
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
B Sind meine If-Statements richtig angesetzt ? Java Basics - Anfänger-Themen 27
A Haben KNNs ein Gedächtnis, lernen etwas oder verändern sich, während sie nicht trainieren, aber aktiv sind? Java Basics - Anfänger-Themen 3
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
R Wozu sind Annotations da? Java Basics - Anfänger-Themen 3
H Was sind Package bei eclipse? Java Basics - Anfänger-Themen 1
V NullPointerException, wenn Key und Value null sind Java Basics - Anfänger-Themen 2
G Überprüfen ob alle Ziffern von 1-9 in einem Integer vorhanden sind Java Basics - Anfänger-Themen 6
D Zwei Strings sind gleich bei if aber nicht true Java Basics - Anfänger-Themen 2
J Strings sind gleich werden aber ungleich ausgewertet Java Basics - Anfänger-Themen 2
H Array mit Zahlen die durch 3 und 5 teilbar sind erstellen Java Basics - Anfänger-Themen 13
J Klassen Math && Random: wie zufällig sind Zufallszahlen? Java Basics - Anfänger-Themen 19
L Prüfe, ob die im String Array enthaltenen Strings aufsteigend sind. Java Basics - Anfänger-Themen 19
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
C Tabs in JTabbedPane wechseln, wenn Tabs in eigenen Klassen sind Java Basics - Anfänger-Themen 2
Azazel Wie wichtig sind Castings in Java ? Java Basics - Anfänger-Themen 1
S Was sind Java Beans? Java Basics - Anfänger-Themen 7
S Erste Schritte Generische Klassen sind toll ....aber warum sollte ich das je benutzen? Java Basics - Anfänger-Themen 3
J Prüfen ob Arrays nur mit einem Wert belegt sind Java Basics - Anfänger-Themen 3
K Erste Schritte switch - Warum sind long/float/double/... nicht erlaubt? Java Basics - Anfänger-Themen 5
M Wie sicher sind Daten im Java Programm? Java Basics - Anfänger-Themen 9
P Wieviele Tage seit dem Datum vergangen sind Java Basics - Anfänger-Themen 5
P OOP Testen ob 2 Strings gleich sind Java Basics - Anfänger-Themen 8
M Welche externen Bibliotheken sind in Java sehr zu empfehlen? Java Basics - Anfänger-Themen 4
? Wie sind ESCAPE-Sequenzen (z.B \f für einen Seitenvorschub) richtig anuwenden? Java Basics - Anfänger-Themen 3
M Warum sind Strings Immutable? Java Basics - Anfänger-Themen 7
S Werte aus SingeltonKlasse sind manchmal =0 &manchmal !=0 Java Basics - Anfänger-Themen 1
M Sind solche boolean Anweisen empfehlenswert? Java Basics - Anfänger-Themen 3
F Scanner + Stringbuilder geben leeren String aus wenn Umlaute enthalten sind Java Basics - Anfänger-Themen 29
M String überprüfen ob nur Buchstaben enthalten sind? Java Basics - Anfänger-Themen 8
Kenan89 Wo sind die Java Standard Library Source Codes zu finden? Java Basics - Anfänger-Themen 5
L JDK installieren Sind in src.zip tatsächlich die verwendeten Klassen? Java Basics - Anfänger-Themen 7
L Byte[] to String, doch bits sind gespiegelt (MSB/LSB) Java Basics - Anfänger-Themen 3
B Funktionen programmieren, die im Hintergrund aktiv sind Java Basics - Anfänger-Themen 2
S Von byte[] nach String zurueck nach byte[]. Arrays sind nicht identisch :( Java Basics - Anfänger-Themen 6
C hashCode() bei Klassen, die nicht immutable sind Java Basics - Anfänger-Themen 27
C Erste Schritte felder, die public final sind Java Basics - Anfänger-Themen 6
D Warum sind Generics mit Vorsicht zu genießen? Java Basics - Anfänger-Themen 6
E Was sind Javascript und Java EE? Java Basics - Anfänger-Themen 7
S Wie performance lastig sind rekursionen Java Basics - Anfänger-Themen 13
C Nach Java-Installation sind Befehle erfolglos Java Basics - Anfänger-Themen 4
B Variablen Warum sind die blau Java Basics - Anfänger-Themen 2
L Liste aller Klassen die in einem Paket sind Java Basics - Anfänger-Themen 7
S Warten bis alle Threads fertig sind Java Basics - Anfänger-Themen 12
M Erste Schritte zwei Buchstaben die im String enthalten sind ausgeben Java Basics - Anfänger-Themen 21
J Drei Errors sind drei zuviel! Java Basics - Anfänger-Themen 25
RySa Input/Output Datei kann nicht gelöscht werden, obwohl Streams geschlossen sind. Java Basics - Anfänger-Themen 2
H Wieviele Objekte gleichzeitig sind sinnvoll? Java Basics - Anfänger-Themen 4
S Dezimale Konstanten sind immer positiv oder null - was heisst das den genau? Java Basics - Anfänger-Themen 2
D Strings sind ungleich obwohl sie in der Ausgabe gleich sind Java Basics - Anfänger-Themen 10
D Sind Enums typsichere Konstanten? Java Basics - Anfänger-Themen 15
S Warum sind Attribute der Klasse java.awt.Point public? Java Basics - Anfänger-Themen 3
T Buttons (auf denen bilder sind) random vertauschen Java Basics - Anfänger-Themen 11
W Array nach Elemenden die durch 2 teilbar sind durchsehen Java Basics - Anfänger-Themen 9
N TextZeile in einzelne Strings teilen, die mit Komma getrennt sind Java Basics - Anfänger-Themen 4
L Elemente die in Array1 sind aus Array2 löschen Java Basics - Anfänger-Themen 6
C Compiler-Fehler Variablen sind angeblich nicht initialisiert Java Basics - Anfänger-Themen 7
M Sind ternäre Operatoren für einen guten Programmierstil wichtig ? Java Basics - Anfänger-Themen 10
I Was sind denn überhaupt Doctypes bei Java? Java Basics - Anfänger-Themen 7
Developer_X Sounds abspielen, die im internet sind (.wav) Java Basics - Anfänger-Themen 2
A Erzeugte Objekte sind nicht bekannt Java Basics - Anfänger-Themen 16
H Warum sind in Java Strings und Arrays eigentlich unveränderlich? Java Basics - Anfänger-Themen 2
G Objekte von Klassen die erst zur Laufzeit bekannt sind erstellen Java Basics - Anfänger-Themen 6
nrg Datentypen Sind Arrays Objekte? Java Basics - Anfänger-Themen 9
B Für was sind die Annotationen gut? Java Basics - Anfänger-Themen 6
F import Statement für Klassen die dem default Package zugeordnet sind? Java Basics - Anfänger-Themen 2
T Probleme mit ArrayList, in der Objekte gespeichert sind, die ArrayLists enthalten Java Basics - Anfänger-Themen 2
Semox Sind Objekte in einer ArrayList überschreibbar? Java Basics - Anfänger-Themen 2
D 100.0% gleichmäßig aufteilen, so dass Summe 100.0% sind, nicht 99,9% oder 100,1% Java Basics - Anfänger-Themen 3
feuervogel Datentypen Zwei Sets sind gleich, aber dann doch nicht Java Basics - Anfänger-Themen 9
N java.util.Arrays.sort Warum sind Leerzeichen vor alphabetischen Zeichen sortiert? Java Basics - Anfänger-Themen 12
cowabunga1984 Unit-Testing - Welche Testfälle sind relevant? Java Basics - Anfänger-Themen 4
M Was sind das für Probleme? Java Basics - Anfänger-Themen 6
B was sind Dataflavor Java Basics - Anfänger-Themen 2
M Wo sind meine double-Zahlen? Java Basics - Anfänger-Themen 2
T Sind Kontrollflussanweisungen auch Methoden? Java Basics - Anfänger-Themen 5
N Wie schlimm sind Cyclen in einem Programm Java Basics - Anfänger-Themen 3
G welche Teile der api sind wichtig? Java Basics - Anfänger-Themen 3
T Was sind Attribute? Java Basics - Anfänger-Themen 9
P Was sind Vectoren und Maps in Java? Java Basics - Anfänger-Themen 3
G Sind das Generics Java Basics - Anfänger-Themen 2
P Prüfen ob alle zellen der tabelle leer sind Java Basics - Anfänger-Themen 9
C Alle Zeichen, die in der Console sind in Textdatei Java Basics - Anfänger-Themen 12
M Feststellen, das Textboxen leer sind! Java Basics - Anfänger-Themen 3
6 Swing: Dynamisch erzeugte Objekte sind verschoben Java Basics - Anfänger-Themen 2
G Was Units für Pascal sind, sind ? für Java Java Basics - Anfänger-Themen 9
L Bedingung immer false, auch wenn zwei Strings gleich sind Java Basics - Anfänger-Themen 11
C Welche Elemente sind in der ComboBox? Java Basics - Anfänger-Themen 3
G alle Zahlen die durch 3 teilbar sind Java Basics - Anfänger-Themen 4
G Herausfinden, wann mehrere Threads abgeschlossen sind Java Basics - Anfänger-Themen 3
F Warum sind Interface-Methoden public? Java Basics - Anfänger-Themen 19
N Java wird nicht ausgeführt obwohl nötige Pfade gesetzt sind Java Basics - Anfänger-Themen 5

Ähnliche Java Themen


Oben