输入意图如下所示。 \ n 喀山河 \ n 6789 \ n Nzk462 \ n
然而,我收到的输出看起来像这样 kzn462nullnzk 为什么是这样?我怎么解决呢?
private void btnGenerateActionPerformed(java.awt.event.ActionEvent evt) {
secondname = JOptionPane.showInputDialog("Enter your surname:");
firstname = JOptionPane.showInputDialog("Enter your firstname:");
idno = JOptionPane.showInputDialog("Enter your idno:");
nametag = firstname.substring(0, 1);
initials = secondname + " " + nametag;
int randnum;
do {
randnum = (int) (Math.random() * 900) + 100;
} while (randnum % 2 != 0);
code = secondname.replaceAll("[aeiou || AEIOU](?!\\b)", "")+randnum ;
txaDisplay.append(initials + '\n' + idno.substring(6,10) + '\n' + code);
int length = secondname.length();
for (int i = length - 1; i >= 0; i--) {
reverse = reverse + secondname.charAt(i);
}
String end = reverse + code;
txaDisplay.append( reverse);
答案 0 :(得分:2)
为什么不使用
new StringBuilder(secondname).reverse().toString()
撤销String
?它更好,更简单,更有可维护性。
答案 1 :(得分:1)
从这个新数组
创建一个新字符串 String source = "abcdefg";
char[] chars = source.toCharArray();
char[] reverseChars = new char[source.length()];
int len = source.length();
for(int i= 0; i < len; i++){
reverseChars[i] = chars[len-1-i];
}
String reverse = new String(reverseChars);
System.out.println(reverse);
答案 2 :(得分:0)
因为您不想使用StringBuilder / StringBuffer。
试试这个
String reversedString="";
for(int i=inputString.length-1;i>=0;){
reversedString+=inputString.charAt(i--);
}
答案 3 :(得分:0)
我认为问题是你对逆向的定义,也许你有类似的东西:
String reverse;
然后你不要初始化你的&#34;反向&#34;所以当你的程序在你的循环中进行第一次连接时,它看起来像这样:
reverse = null + secondname.charAt(i);
将null值转换为字符串,以便在输出中可见。
我希望这些信息可以帮到你。
祝你好运。