2016-04-09 7 views
0

Ich habe ein bisschen Probleme mit dem Versuch, ein Array mit printf zu drucken, ich mache es durch OOP. Im vorbei Zufalls Gehälter für 10 Vertriebsmitarbeiter.Verwenden von printf in Java mit Arrays

Hier ist, was ich so weit gekommen ...

public void printArray() 
{ 
    for(int salesRep = 0; salesRep < salary.length; salesRep++) 
    { 
     System.out.printf("Sales Rep %d%n", "%4d Current Salary: %2.f", (salesRep + 1), salary[salesRep]); 
    } 
} 

Dies ist die Ausgabe Ich erhalte ...

enter image description here

jedoch habe ich es bekommen werde versuchen, wie dies anzuzeigen ... würde enter image description here

Jede mögliche Hilfe geschätzt.

+0

ich nie eine einzige Zeile Java in meinem Leben codiert, aber es sieht für mich aus, dass Sie 3 (vielleicht 4) Formatbezeichner (% d% n% 4d% 2.f) und nur 2 Daten ((salesRep + 1) und Gehalt [sal esRep]). – jbm

+0

& d & n ist für eine dezimale Ganzzahl und neue Zeile (die ich als 1 Spezifizierer zähle)% 4d ist Tab über und% 2.f ich denke, ist auf 2 Dezimalstellen zu haben? – Konahrik16

+1

Die Signatur von printf() ist 'printf (String format, Object ... args)'. Aber Sie haben zwei Formatzeichenfolgen und dann 2 Argumente anstelle von 1 Formatzeichenfolge und 3 Argumenten. –

Antwort

3

Ich denke, es ist so etwas wie dies sein muss:

System.out.printf("Sales Rep %d Current Salary: %.2f %n", (salesRep + 1), salary[salesRep]); 

Jede Zeile, die ist innerhalb der doppelten Anführungszeichen gedruckt werden. Die folgenden Werte ersetzen die% d bzw.% f innerhalb der Anführungszeichen (Sie können Ihre eigene Breite/Abstand wählen). Das% n innerhalb der Anführungszeichen erzeugt eine neue Zeile.

+0

Ich habe% 2.f% n in% .2f% n geändert und es hat funktioniert! – Konahrik16

1

Sie müssen Ihre Formatzeichenfolgen in einer einzigen Zeichenfolge als ersten Parameter kombinieren. Sie haben auch eine zu viele Spezifizierer, entfernen Sie also %4d. Und ändern Sie den letzten Spezifizierer zu %.1f - der Zeitraum (.) muss vor der Ziffer stehen (1).

Weitere Informationen darüber, wie printf in Java verwenden: https://www.cs.colostate.edu/~cs160/.Spring16/resources/Java_printf_method_quick_reference.pdf

Beispiel:

public class Test { 
    public static void main(String []args) { 
    printArray(); 
    } 

    public static void printArray() { 
    double salary[] = {35000.0, 45000.0, 2000.0, 110000.0, 5000.0 
         35001.0, 18999.0, 95000.0, 9999.0, 65000.0}; 
    for(int salesRep = 0; salesRep < salary.length; salesRep++) { 
     System.out.printf("Sales Rep %d\tCurrent Salary: %.1f\n", 
         (salesRep + 1), salary[salesRep]); 
    } 
    } 
} 

Ausgang:

Example output