2012-04-01 2 views
-1

für diese Richtlinien:
Warum ist das Programm nur einen Bindestrich angezeigt wird, auch wenn der Parameter auf 5 gesetzt ist, zum Beispiel

Schreiben Sie die Definition einer Methode DashedLine, mit einem Parameter, ein int.

Wenn der Parameter negativ oder null ist, führt die Methode nichts aus. Andernfalls wird eine vollständige Zeile gedruckt, die durch einen Zeilenumbruch an die Standardausgabe mit Bindestrichen (Bindestrichen) abgeschlossen wird, wobei der Wert des Parameters die Anzahl der Bindestriche bestimmt. Die Methode gibt nichts zurück.

Ich schrieb den folgenden Code, aber es druckt nur einen Bindestrich, wenn ich in Eclipse laufen und geben Sie einen Testparameter von 5. Ich denke, dass ich stattdessen eine for-Schleife verwenden muss. Ich denke, es schleift innerhalb der Schleife dafür nur einen Bindestrich zurück.
Wie kann ich diesen Code "beheben"?

void dashedLine(int x) 
    { 
     int i=0; 
     if(x>0) 
      { 
      if(i<=x) 
       { 
        i++; 
        System.out.print("-"); 
       } 
       else 
        System.out.print("\n"); 

      } 
    } 
+1

würde for (i = 0; i gnawthatthingoffyourface

+1

Ja, viel besser! -) – gbulmer

+0

danke! Ich habe beides und die Antwort unten versucht. beides hat gut funktioniert :) – gnawthatthingoffyourface

Antwort

2

Aber es gibt keine Schleife. if ist keine Schleife. forwhile und do while sind die drei verschiedenen Schleifen in Java. Sie sollten lieber:

void dashedLine(int x) 
{ 
    for (int i=0;i<x;i++) { 
     System.out.print("-"); 
    } 
    System.out.print("\n"); 
} 
+0

Ich habe die erste vorgeschlagene Lösung verwendet, nur weil es etwas ist, was ich noch nie zuvor gesehen habe, aber das ist der Ansatz, den ich verwenden sollte. danke für das Aufräumen, dass IF keine Schleife ist! – gnawthatthingoffyourface

1

Sie müssen hier eine Schleife verwenden: while, for, do-while anstelle einer bedingten if.

while(i++ <= x) { 
    System.out.print("-"); 
} 
+0

Ich habe gerade bearbeitet: D – Alexander

+0

Oh cool! Ich wusste nicht einmal, dass es so gemacht werden könnte! durchläuft die While-Schleife ihre Funktionen und ändert dann ihren Klammerinhalt? Oder geht das (i ++ <= x) durch Befehle, und jede Schleife addiert sich zu i, ohne auf den Klammerinhalt zu verweisen? ... Macht das Sinn? lol – gnawthatthingoffyourface

+0

TL; DR Ich habe noch nie die linke Seite des Boolean gesehen haben ein ++ beigefügt. Eine kurze Erklärung wäre großartig. – gnawthatthingoffyourface

1

Wie Sie vorgeschlagen, sollten Sie FOR-Schleife hier verwenden:

for (i = 0; i < x; i++) 
    { 
    System.out.print("-"); 
    } 
    System.out.print("\n"); 
Verwandte Themen