0

我收到此错误:此代码的“此方法必须返回字符串类型的结果”。此外,我还没有找到很多关于 .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]);
        }
    }
}
4

3 回答 3

1
public String toString() // returns a String

此方法的return类型是 a String,但您根本没有 return 语句。您需要有一个 return 语句,它从这个方法返回一个字符串。使用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()方法。您可以重命名方法并 make 它,或者如果您希望保持相同的名称(并覆盖),那么您肯定需要有一个 return 语句。ObjectStringvoidObject.toString()

public void printArray() // Something like this

是的,无论返回类型是void还是String,您始终可以按照您所做的方式打印您的数组。只是如果它是一个String返回类型,你将不得不返回 aString以及你在方法中所做的打印。

于 2013-11-13T07:53:31.080 回答
1

您需要根据您的方法签名返回一个字符串。尝试这个。

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();
}
于 2013-11-13T07:59:04.680 回答
0

不,PrintStream.printf()没有被删除。System.out是 的一个实例java.io.PrintStream

于 2013-11-13T08:03:06.370 回答