2013-11-13 3 views
0

Я получаю эту ошибку: «этот метод должен возвращать результат строки типа» для этого кода. Кроме того, я не смог много узнать о методе .printf (я только что получил его из своего учебника, так как мне нужно было форматировать его точно так, как в нем). Удалили ли этот метод?Ошибка при использовании 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]); 
     } 
    } 
} 
+0

ошибка говорит все. Return String –

ответ

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 класса, чей возвращаемый тип String. Вы можете переименовать метод и сделать его void, или если вы хотите сохранить одно и то же имя (и переопределить Object.toString()), то вам обязательно нужно иметь оператор возврата.

public void printArray() // Something like this 

И да, является ли тип возвращаемого значения void или String, вы всегда можете распечатать массив в моде вы сделали. Просто, если его тип возврата String, вам нужно будет вернуть String вместе с печатью, выполненной в методе.

+0

Еще раз спасибо, RJ. Так есть способ все еще напечатать это так из этого метода? Я переключил его на общедоступный void, но затем он дал эту ошибку. «Тип возврата несовместим с Object.toString()» – user1953907

+0

@ user1953907 Если вы используете метод void, не называйте его 'toString()', назовите его что-то вроде 'print()' или 'display()'. – Justin

+0

@ user1953907 - Я отредактировал свой ответ, чтобы ответить на ваши сомнения. Дайте мне знать, если вам нужна дополнительная ясность! :) – SudoRahul

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(); 
} 
Смежные вопросы