我在弄清楚如何使用随机字母制作回文生成器方面遇到了一些麻烦。例如asdffdsa,kiutgtuik。我需要输入大小并使用它来制作回文。我已经有了一些代码,如果你能帮助我指出正确的方向,我感到很好奇。我也想尝试不使用数组。
import java.util.Random;
public class PP425 {
public static String generatePalindrome (int size) {
Random rand = new Random();
char ch = (char)(rand.nextInt(26) + 97);
String random = "";
for (int i = 0; i < size; i++) {
}
return random;
}
public static void main(String[] args) {
System.out.println(generatePalindrome(3));
}
}
答案 0 :(得分:1)
创建大小为char[]
的{{1}}。生成0到25之间的K
个数字并添加“a”。现在你生成的char只是将它放在random()
和begin
中并增加end
,递减begin
。这样做直到end
begin <= end.
答案 1 :(得分:0)
import java.util.Random;
public class PP425 {
public static String generatePalindrome (int size) {
Random rand = new Random();
StringBuilder random = new StringBuilder(size);
for (int i = 0; i < (int)Math.ceil((double)size/2); i++) {
char ch = (char)(rand.nextInt(26) + 97);
random.append(ch);
}
for(int i = size/2-1; i >= 0; i--)
random.append(random.charAt(i));
return random.toString();
}
public static void main(String[] args) {
System.out.println(generatePalindrome(3));
}
}
答案 2 :(得分:0)
对random.nextInt()
的调用不应放在for
循环之外,而应放在String
循环之内。您不一定需要使用数组。您可以简单地连接StringBuilder
(或使用for
)。
在StringBuilder.reverse
循环中,您构建了回文的前半部分。然后,您可以使用for
方法生成下半部分。
如果您的尺码是奇数,请注意中间字母!
此外,您的{{1}}循环应该只运行到一半大小。或者(大小 - 1)/ 2,如果大小是奇数。