使用System.out.printf时出错

时间:2013-11-13 07:52:47

标签: java compiler-errors

我收到此错误:“此方法必须为此代码返回类型字符串的结果”。另外,我还没有找到关于.printf方法的更多内容(我只是从我的教科书中得到它,因为我需要将它格式化,就像它们在那里一样)。这种方法被删除了吗?

public String toString()
{
    System.out.println("Shown are the prices for " +
            "each seat. A 0 indicates the seat is " +
            "unavailable.");
    for(int i = 0; i < 9; i++)
    {
        for(int j = 0; j < 10; j++)
        {
            System.out.printf("%8d", seatArray[i][j]);
        }
    }
}

3 个答案:

答案 0 :(得分:1)

public String toString() // returns a String

此方法的return类型为String,但您根本没有返回语句。您需要有一个return语句,它返回此方法的String。使用System.out.printf没有问题。

public String toString()
{
    System.out.println("Shown are the prices for " +
            "each seat. A 0 indicates the seat is " +
            "unavailable.");
    for(int i = 0; i < 9; i++)
    {
        for(int j = 0; j < 10; j++)
        {
            System.out.printf("%8d", seatArray[i][j]);
        }
    }
    return someString; // return statement is required as the method return type is String and not void
}

请注意,您无法将返回类型更改为void,因为当您为方法使用toString()名称时,它会覆盖toString() Object方法。 1}}类,其返回类型为String。您可以重命名方法并将其设为void,或者如果您希望保留相同的名称(并覆盖Object.toString()),那么您需要确定一个return语句。

public void printArray() // Something like this

是的,无论返回类型是void还是String,您都可以按照自己的方式打印阵列。只是如果它是String返回类型,则必须返回String以及您在方法中执行的打印。

答案 1 :(得分:1)

您需要根据方法签名返回String。试试这个。

public String toString()
{
    StringBuilder sb = new StringBuilder()'
    sb.append("Shown are the prices for " +
           "each seat. A 0 indicates the seat is " +
           "unavailable.\n");

    for(int i = 0; i < 9; i++)
    {
        for(int j = 0; j < 10; j++)
        {
            sb.append(String.format("%8d\n", seatArray[i][j]));
        }
    }

    return sb.toString();
}

答案 2 :(得分:0)

不,PrintStream.printf()未被删除。 System.outjava.io.PrintStream的实例。