2017-04-15 5 views
1

Hier ist mein -CodeVerwirrung auf do-while-Schleife

import java.util.*; 
public class dowhile 
{ 
public static void main (String [] args) 
{ 
Scanner kb = new Scanner (System.in); 
System.out.println("Enter number of # to be displayed: "); 
int tim = kb.nextInt(); 

    String hash = "#"; 

    do 
    { 
     System.out.println(hash); 
     hash = hash + 1; 
     } while (hash.equals(5)); 
    } 
} 

Ich bin verwirrt, wie durch die Benutzernummer von # nach gefragt anzuzeigen ..

Ich weiß hash.equals(5) nicht Sinn ergeben. Wie kann ich diesen Code reparieren?

Jeder bitte geben Sie den Vorschlag zu mir.

+0

Sie Syntaxfehler haben, warum Sie nach innen setzen, während zu tun? Versuchen Sie Folgendes: do { System.out.println (Hash); Hash = Hash + 1; } while (hash.equals (tim)); –

Antwort

0

Eine int-Variable vor der Schleife deklarieren. Erhöhen Sie die Anzahl um eins in do und checken Sie dann die Zahl in while loop wird die gewünschte Ausgabe gedruckt.

int i=0; 
do 
{ 
    System.out.println(hash); 
    i=i + 1; 
} while (i<tim); 
+0

Obwohl dies die Frage beantworten könnte, wären einige Kommentare und/oder Erklärungen nett. Das wird auch anderen Benutzern helfen. – VDWWD

0

Sie könnten tim als Zähler verwendet werden, und Abnahme es vor dem Test, wenn es größer ist als 0. So etwas wie,

int tim = kb.nextInt(); 
do { 
    System.out.print("#"); 
} while (--tim > 0); 
System.out.println(); 
1

Sie können auch Apache commons-LANG3 verwenden, die StringUtils.repeat(String, int)

Parameter hat: str - der String wiederholen können, null wiederholen - str zu wiederholen Anzahl von Malen, negativ behandelt als Null

0

hash ist die Zeichenfolge, die Sie drucken möchten, so sollten Sie nie seinen Wert wie folgt ändern:

hash = hash + 1; // this does not actually compile anyway. 

Um zu verfolgen, wie oft Sie noch drucken müssen, benötigen Sie eine int Variable. Wie Sie sehen können, ist tim ein int und es hat bereits die Benutzereingabe darin gespeichert. Lassen Sie uns tim als unseren Zähler verwenden.

Jedes Mal, wenn Sie eine # drucken, verringern Sie tim um 1. Und im Zustand Schleife schreiben Sie tim > 0. Dadurch wird die Schleife machen, so lange laufen, wie tim größer als 0.

Scanner kb = new Scanner(System.in); 
System.out.println("Enter number of # to be displayed: "); 
int tim = kb.nextInt(); 

String hash = "#"; 

do { 
    System.out.println(hash); 
    tim--; // this is equivalent to tim = tim - 1;, in case you did not know 
} while (tim > 0); 

Aber ich glaube nicht, eine do-while Schleife ist hier geeignet. Was ist, wenn der Benutzer 0 eingegeben hat? Eine # wird weiterhin gedruckt. Das ist nicht gut, nicht wahr?

Ich schlage vor, eine for-Schleife hier:

Scanner kb = new Scanner(System.in); 
System.out.println("Enter number of # to be displayed: "); 
int tim = kb.nextInt(); 

String hash = "#"; 

for (int i = 0 ; i < tim ; i++) { 
    System.out.println(hash); 
}