我收到此错误:“此方法必须为此代码返回类型字符串的结果”。另外,我还没有找到关于.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]);
}
}
}
答案 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.out
是java.io.PrintStream
的实例。