int无法解除引用,将数组中的int值转换为字符串

时间:2016-04-08 17:28:37

标签: java arrays int tostring

我正在编写一个程序来打印保龄球游戏的分数。分数在名为rolls的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代表一个警示)需要打印为字符串,如“X”表示值为10.我是尝试将int转换为字符串,并且不知道如何修复发生的错误,“int无法解除引用”。我没有很多编程经验,所以直截了当的答案对我来说是最有帮助的。

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("+---+---+---+");
    }

2 个答案:

答案 0 :(得分:4)

int是一种原始类型,因此它没有使用的方法。尝试

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

而不是

rolls[i].toString()

答案 1 :(得分:2)

当你致电rolls[i].toString()时,你真的在​​一个int上调用.toString()。由于该方法在int上不存在,因此会抛出错误。

可能的解决方案是直接将int传递给您的打印方法。由于这些是整数,转换为String并不会以任何不同的方式对其进行格式化。另一种解决方案是使用String.valueOf(rolls[i])将您的int转换为String