2016-11-08 2 views
2

Ich bin ein Anfänger in Java und ich habe eine Aufgabe auf Schleifen. Ich weiß, dass diese Frage für Sie sehr einfach klingen mag, aber ich konnte keine verständliche Antwort finden. Mein Code sieht grundsätzlich so aus;Java-Speichern von Werten in einer While-Schleife

import java.util.Scanner; 

public class Histogram 
{ 
    public static void main(String[] args) 
    { 
    Scanner scan = new Scanner(System.in); 

    // Constant 

    final String CH = "*"; 

    // Variables 
    int number; 
    int count; 
    int start; 
    int width; 
    int line; 
    String output; 


    // Program Code 

    count = 0; 
    number = 0; 
    start = 1; 
    width = 0; 
    line = 0; 
    output = ""; 


    // Creating the loop 

    while (start == 1) 
    { 
     System.out.println("Enter the numbers"); 
     number = scan.nextInt(); 

     if (number < 0) 
     { 
     start = 0; 
     } 

     else 
     { 
     while (width < number) 
     { 
     output = CH + " " ; 
     width = width + 1 ; 
     System.out.print(output); 
     } 
     width = 0; 


     } 
    } 

    } 
} 

Dies läuft perfekt, aber die Ausgabe von Sternen wird nach jeder Benutzereingabe gedruckt. Ich möchte die Ausgabe von jeder Schleife speichern und sie am Ende zusammen drucken, wenn eine negative Ganzzahl eingegeben wird. Wie kann ich die Ausgaben speichern, von denen ich nicht weiß, wie viele davon vom Benutzer eingegeben werden? Kurz gesagt möchte ich die folgende Ausgabe Geben Sie

haben die Nummern: 3 5 6 4 -1 // Zahlen sind Benutzereingaben

3 *** 5 ***** 6 *** *** 4 ****

+0

wenn Sie wollten, könnten Sie eine erstellen String-Variable, um alle Zeilen zu halten. Und Sie könnten einfach Ausgang + "\ n" anhängen, so dass Ihre End-Zeichenfolge wie output1 output2 output3 etc. – chatton

+0

einfach aussehen würde, wenn Sie Dinge zusammen gehen dann verwenden Sie sie separat (nicht in anderen) und verwenden Sie entweder Array oder Liste zum Speichern Ihrer Daten –

+0

Möchten Sie die Ausgabe für jede Iteration in einer anderen Zeile drucken? – bane19

Antwort

0

Dies ist die Antwort :

import java.util.Scanner; 

public class Histogram 
{ 
    public static void main(String[] args) 
    { 
    Scanner scan = new Scanner(System.in); 

    // Constant 

    final String CH = "*"; 



    int count = 0; 
    int number = 0; 
    int start = 1; 
    int width = 0; 
    int line = 0; 
    String output = ""; 
    String store=""; 


    // Creating the loop 

    while (start == 1) 
    { 
     System.out.println("Enter the numbers"); 
     number = scan.nextInt(); 

     if (number < 0) 
     { 
     start = 0; 
     } 

     else 
     { 
     while (width < number) 
     { 
     output = CH + " " ; 
     width = width + 1 ; 
     store+=output; 
     } 
     width = 0; 


     } 
    } 
    System.out.print(store); 

    } 
} 
+0

Die Ausgabe ist die aufeinanderfolgenden Sterne, aber ich möchte jedes auf einer anderen Linie haben, so änderte ich Speicher + = Ausgabe zu speichern + = Ausgabe + "\ n", aber dann werden Sterne unter einem anderen was kann ich tun? –

+0

Also okay, ich habe die Antwort gefunden, vielen Dank für Ihre Hilfe –

-1

Verwenden Sie eine Liste, zum Beispiel eine ArrayList, anstelle eines Arrays, da die Größe dynamisch wachsen kann.

Zum Beispiel

List<Integer> ints = new ArrayList<>(); 
ints.add(5); 
ints.add(2); 
ints.add(7); 

for(Integer i : ints){ 
    System.out.println(i); 
} 

Wenn Sie Duplikate nicht wollen, könnten Sie ein stattdessen Set verwenden.

0

Sie müssen nur eine Variable erstellen (so etwas wie String oder StringBuilder(bevorzugt)) außerhalb des Rahmens, während und statt Ihr Ergebnis direkt drucken, dann würden Sie anhängen, was ist der Ausgang, auf diese Variable und ausdrucken Am Ende.

Mit diesem Ansatz sammeln Sie im Prinzip die gesamte Ausgabe und drucken sie auf einmal.

... 

//create a output variable outside while loop. You can also use simple String 
StringBuilder out = new StringBuilder(); 

while (start == 1) 
{ 
    System.out.println("Enter the numbers"); 
    number = scan.nextInt(); 

    if (number < 0) 
    { 
    start = 0; 
    } 

    else 
    { 
    while (width < number) 
    { 
    output = CH + " " ; 
    width = width + 1 ; 

    //instead of directly printing, you can append your output to out variable. 
    out.append(output); 

    } 
    width = 0; 


    } 
} 

//after coming out of the loop, you can now print it 
System.out.print(out); 

... 
0

In den "else" Sie könnten nur die Zahlen speichern eingegeben:

List<Integer> myList = new ArrayList<>(); //previously defined 
(...) 
else { 
     myList.add(number); 
} 

und dann außerhalb der while-Schleife, einmal bevölkert Ihre Arraylist:

for(int i=0;i<myList.size();i++) 
{ 
    for(int j=0;j<myList.get(i);j++) 
    { 
     System.out.print("*"); 
    } 
    System.out.print("\n"); 
} 
Verwandte Themen