2016-04-08 10 views
1

Ich schreibe ein Programm, um die Ergebnisse eines Bowlingspiels auszudrucken. Die Noten werden in einer int-Array bereitgestellt genannt Rollen:int kann nicht dereferenziert werden, wandeln Sie einen int-Wert von einem Array in einen String um

rolls = new int[] {1, 1, 2, 2, 3, 3, 4, 4, 5, 4, 6, 3, 2, 7, 1, 8, 0, 9, 0, 0}; 

ich die Score-Werte in Strings, um mich umzuwandeln, um sie auszudrucken, weil einige der Werte, wie 10, die einen Angriff darstellt, gedruckt werden müssen, aus als Strings, wie "X" für einen Wert von 10. Ich versuche, die Ints in Strings zu konvertieren und nicht wissen, wie der Fehler behoben wird, der auftritt, "Int kann nicht dereferenziert werden." Ich habe nicht viel Erfahrung Programmierung so einfache Antworten werden für mich an dieser Stelle sehr hilfreich sein.

public class Bowling { 
    private int frames; 
    private int[] rolls; 
    int currentFrameCount=0; 
    int currentFrame=1; 
    int grantTotal=0; 
    int ballCount=1; 

public Bowling(int[] rolls, int frames) 
{ 
    this.frames=frames; 
    this.rolls=rolls; 
} 

public void play() 
{ 
    String box1=""; 
    String box2=""; 
    String box3=""; 
    int totalScore = 0; 
    for(int i=0; i < rolls.length; i += 2) 
    { 
     totalScore += rolls[i] + rolls[i+1]; 

     if(rolls.length % 2 == 0) 
     { 
      printNormalFrame(rolls[i].toString(), rolls[i+1].toString(), *totalScore.toString());***-->having the error here** 
     } 

     else 
     { 
      printBiggerFrame(rolls[i].toString(), rolls[i+1].toString(), totalScore.toString()); 
     } 

    } 
} 

public void printNormalFrame(String box1, String box2, String totalScore) 
{ 

    System.out.println("+---+---+"); 
    System.out.println("| " + box1 + " | " + box2 + " |"); 
    System.out.println("|---+---|"); 
    System.out.println("|  " + totalScore + " |"); //todo do the padding correctly using String.Format(...), 
    System.out.println("+---+---+"); 
} 

public void printBiggerFrame(String box1, String box2, String box3, int totalScore) 
{ 
    { 
     System.out.println("+---+---+---+"); 
     System.out.println("| " + box1 + " | " + box2 + " | " + box3 + " |"); 
     System.out.println("|---+---+---|"); 
     System.out.println("|  "+totalScore+"|"); //todo the padding  correctly using String.Format(...) 
     System.out.println("+---+---+---+"); 
    } 
+0

Was denken Sie 'totalScore.toString()' tun sollte? Warum denkst du das? Was haben Sie gefunden, als Sie die Fehlermeldung des Compilers nachgeschlagen haben? – Savior

+0

Ich dachte, dass die Verwendung von totalScore.toString() den int-Wert meines totalScore nehmen und es in eine Zeichenfolge konvertieren würde, so dass ich es auf die Weise ausdrucken kann, die ich möchte. Ich habe den Fehler nachgeschlagen und Kommentare über die Verwendung von toString gefunden, um ein int in eine Zeichenfolge zu konvertieren, was ich ausprobiert habe, und etwas über die Konkatination mit "", das ich nicht verstanden habe. Ich weiß nicht, ob ich so etwas versuchen sollte: System.out.println (Arrays.toString (array)); durch Importieren des Pakets util.Arrays oder was? – Liz

Antwort

2

Wenn Sie anrufen rolls[i].toString() Sie anrufen wirklich .toString() auf einem int. Da diese Methode unter int nicht existiert, wird ein Fehler ausgegeben.

Mögliche Lösungen sind, einfach die int direkt an Ihre Druckmethoden zu übergeben. Da es sich um Ganzzahlen handelt, wird die Konvertierung in String nicht anders formatiert. Eine andere Lösung wäre, String.valueOf(rolls[i]) zu verwenden, um Ihre int in eine String zu konvertieren.

4

int ist ein primitiver Typ, daher gibt es keine Methoden zum Arbeiten mit. Versuchen

1. String.valueOf(rolls[i]) 
2. Integer.toString(rolls[i]) 
3. rolls[i] + "" 
4. new Integer(rolls[i]).toString() 

statt

rolls[i].toString() 
+3

Ich würde die Verwendung von # 3 und # 4 entmutigen. – Andreas

+0

Das hat den Trick gemacht! Ich nehme an, dass String.valueOf (rollt [i]); nimmt den Wert des Arrays bei i und wandelt es dann in einen String, ist das korrekt? – Liz

+0

@Liz 'String.valueOf()' ist überladen. In diesem Fall wird der 'String.valueOf (int)' benutzt, der den 'int' Wert in einen' String' umwandelt. Um dies zu verdeutlichen, wird die Array-Suche nicht durch 'valueOf()' durchgeführt, sondern durch den Ausdruck 'rolls [i]', der dann den einzelnen Wert an die 'valueOf()' Methode übergibt. – Andreas