我这里有一个代码,它将采用名为toRepeat
的字符串,并在同一行中重复n次。例如toRepeat = *,n = 3,result = ***
public class RepeatIt {
public static String repeatString(final Object toRepeat, final int n) {
int i = 0;
if (toRepeat instanceof String) {
while (i < n) {
toRepeat = toRepeat + toRepeat;
}
return toRepeat;
} else {
return "Not a string";
}
}
}
但是我在2 +
之间的toRepeat
符号上出现错误,该符号表示二元运算符+
的错误操作数类型。如果你知道我怎么解决这个问题,请告诉我,我会非常感激。
答案 0 :(得分:1)
您可以更改
while (i < n){
toRepeat = toRepeat + toRepeat; // operations are not defined for type Object
}
return toRepeat;
到
String tr = (String)toRepeat; // cast to String
while (i < n){
tr = tr + tr; // valid on String
i++; // some condition to terminate
}
return tr;
编辑 :正如@oleg所建议的那样,使用StringBuilder
优先于循环连接字符串。
Edit2 :要一次增加一个字符,您可以执行以下操作:
String tr = (String)toRepeat; // this would be *
String finalVal = "";
while (i < n){
final = finalVal + tr; // would add * for each iteration
i++;
}
return finalVal;
答案 1 :(得分:1)
这里实际上有三个错误:
第一个是Object
的类型toRepeat
(它是final
,即您可能不会分配新值):对象没有+
。您可以将其转换为String
,如之前的答案中所示。
第二:您的循环不会终止,因为i
会停留0
。
第三:如果你增加i
(例如循环中的i += 1
)。您将在第一个循环后获得**
,在第二个循环后获得****
,在第三个循环后获得8个星。
答案 2 :(得分:0)
我认为Apache lib在大多数情况下可以提供帮助。它包含StringUtils
类,有许多有用的方法可以使用String
。这是其中之一:
public class RepeatIt {
public static String repeatString(final Object toRepeat, final int n) {
return toRepeat instanceof String ? org.apache.commons.lang3.StringUtils.repeat((String)toRepeat, n) : "Not a string";
}
}