2 回答
TA贡献1779条经验 获得超6个赞
在您的代码中,String input=keyboard.next();您只调用了keyboard.next()一次。所以在input读取第一个标记后,String 变量的值不变。
所以它导致无限循环,这就是你得到异常的原因
而在两者的for循环使用的循环变量int i,使用像不同的变量int j的嵌套for循环
for(int j=get.length()-1; j>=0; j--) {
back=back+get.charAt(j);
}
如下修改你的代码后,你的测试用例被清除了
public List<String> storeBackwards (Scanner keyboard) {
ArrayList<String> backwards=new ArrayList<String>();
String input=keyboard.next();
while(!input.equalsIgnoreCase("done")) {
String back="";
for(int j=input.length()-1; j>=0; j--) {
back=back+input.charAt(j);
}
backwards.add(back);
back="";
input=keyboard.next();
}
return backwards;
}
TA贡献1873条经验 获得超9个赞
您还可以使用 StringBuffer 的预定义 reverse() 函数,如下面的代码片段所示:
ArrayList<String> backwards = new ArrayList();
Scanner keyboard = new Scanner(System.in);
String input = keyboard.next();
StringBuffer a = new StringBuffer(input);
while (!input.equalsIgnoreCase("done")) {
a = new StringBuffer(input);
backwards.add(a.reverse().toString());
input = keyboard.next();
}
添加回答
举报
