2016-04-08 2 views
1

私はボウリングゲームの得点をプリントアウトするプログラムを作成しています。スコアは、ロールと呼ばれるint配列で提供されていますintは逆参照できません。配列からint値を文字列に変換してください。

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

ストライキを表し、10のような値の一部は、プリントアウトする必要があるため、私はそれらをプリントアウトするために、文字列にスコア値を変換しています私は文字列にintsを変換しようとしていると、エラーが発生していることを修正する方法がわからない "intはdereferencedすることはできません。"私は経験豊富なプログラミングをしていないので、この時点で私にとって最も簡単な答えが私にとって最も役立ちます。

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

'totalScore.toString()'行う必要があります試してみてください?どうしてそう思うの?コンパイラがあなたに与えているエラーメッセージを見たときに何を見つけましたか? – Savior

+0

私はtotalScore.toString()を使うとtotalScoreのint値をとり、それを文字列に変換して、私が望むやり方で印刷できると思いました。私はエラーを調べ、toStringを使ってintを文字列に変換することについてのコメントを見つけました。これは私が試したものであり、私が理解できなかった連結についてのものです。私はこのようなものを試すべきかどうかわからない:System.out.println(Arrays.toString(array)); util.Arraysパッケージまたは何をインポートします。 – Liz

答えて

2

あなたが本当にint型に.toString()を呼び出しているrolls[i].toString()呼び出します。このメソッドはintに存在しないため、エラーが発生します。

可能な解決策は、印刷方法に直接intを渡すことです。これらは整数なので、Stringに変換することはそれを別の方法でフォーマットしません。もう1つの解決策はString.valueOf(rolls[i])を使用してintStringに変換することです。

4

intはプリミティブ型なので、処理する方法はありません。

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

の代わりに、あなたはどう思います

rolls[i].toString() 
+3

私は#3と#4の使用をお勧めしません。 – Andreas

+0

それはトリックでした!私はString.valueOf(rolls [i])と仮定します。私は配列の値を取って、それをStringに変換していますが、それは正しいですか? – Liz

+0

@Liz 'String.valueOf()'がオーバーロードされています。この場合、 'String.valueOf(int)'を使用しています。これは 'int'値を' String'に変換します。明確にするために、配列参照は 'valueOf()'によって行われるのではなく、 'rolls [i]'という式によって行われ、単一の値を 'valueOf()'メソッドに渡します。 – Andreas

関連する問題