Эти функции
blockquote>__radd__
вызывается только в том случае, если левый операнд не поддерживает соответствующую операцию, а операнды имеют разные типы. Например,class X: def __init__(self, num): self.num = num
class Y: def __init__(self, num): self.num = num def __radd__(self, other_obj): return Y(self.num+other_obj.num) def __str__(self): return str(self.num)
>>> x = X(2) >>> y = Y(3) >>> print(x+y) 5 >>> >>> print(y+x) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-60-9d7469decd6e> in <module>() ----> 1 print(y+x) TypeError: unsupported operand type(s) for +: 'Y' and 'X'
Используйте "\n"
, чтобы добавить дополнительную строку в дополнение к уже добавленной строке.
Это потому, что вы добавляете строки вопросов в строку. Поэтому сделайте небольшое изменение в следующей строке:
temp += sf.nextLine() + "\n";
Конечно, символ новой строки зависит от среды, в которой вы работаете (\n
или \r\n
).
Лучший способ добавить множество строк в одну с символом новой строки после каждой из них - использовать StringBuilder. Я переписал ваш код с помощью StringBuilder
public static String[] questionToString(Scanner sf) {
StringBuilder temp = new StringBuilder();
String[] questions = new String[Q];
int i = 0;
while(sf.hasNext()){
for(int y = 0; y < 5; y++) {
temp.append(sf.nextLine());
temp.append(System.lineSeparator());
}
questions[i] = temp.toString();
i++;
temp = new StringBuilder();
return questions;
}
ПРИМЕЧАНИЕ. Пожалуйста, не добавляйте /n
к вашей строке, так как символ новой строки отличается для разных операционных систем. Я посоветую вам использовать System.lineSeparator()
, это добавит символ новой строки в зависимости от операционной системы, в которой вы запускаете свой код.