在我获得循环等和字符串缓冲区之前,这个 HAS 就像这样......带有一个while循环并通过操作来创建字符串..不是使用字符串缓冲区等。
public class C {
public static void main(String[] args) {
System.out.println(rotate("tom", 3));
}
public static String rotate(String s, int n) {
String c = "";
do {
if (s.equals("")) {
return c;
} else {
c = s.charAt(0) + c;
n--;
System.out.println(n);
}
s = s.substring(1);
} while (n > 0);
return c;
}
}
就像标题所说的那样..我需要程序将名称“tom”旋转n次..所以在这个例子中有3次。
它做了一次并将“tom”改为“mot”但是我不知道如何将其改为“tom”三次中的第二次。 有人提供任何提示吗?
答案 0 :(得分:3)
如果您将问题分解为两个解决方案,这可以非常有效! (N是字符串必须反转的次数!)
现在你应该知道在运行一些例子后,当N是偶数时,反转N次的单词将只是单词本身!所以:
if(N%2 == 0){
return str;
}
当N为奇数时,您只需将其反转一次!不需要有一个while循环来保持N次反转,因为如果N是奇数,N-1是偶数!当反转到N-1时,弦应该自行返回!因此,再次将其反转将是您希望的输出。
所以你添加到上面的if语句
else{
//do reverse function
}
这使得你不必继续反转字符串。你只会这样做一次, IF并且只有 N是奇数!
希望有所帮助。 :)
答案 1 :(得分:0)
假设您正在谈论逆转,您需要找到一种方法将c
再次设置回s
,以便您可以重复此操作。由于您正在进行逐个字符的反转,因此您需要两个循环:内部循环将从0
运行到str.length - 1
,而另一个循环应该从0
运行到{ {1}}。
很多更容易 * ,但我想你的老师希望你这样做,以了解循环的基础知识。
* 如果是n - 1
,那么您只需要返回n % 2 == 0
,否则就会反转。