Java - 反向字符串空错误

Java - Reverse String null error

输入应该像这样显示,例如。 \n 喀山R \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);

你为什么不用

new StringBuilder(secondname).reverse().toString()

要扭转你的String?它更好、更简单、更易于维护。

因为您不想使用 StringBuilder/StringBuffer。

试试这个

String reversedString="";
for(int i=inputString.length-1;i>=0;){
   reversedString+=inputString.charAt(i--);  
}
  1. 从源字符串中获取字符数组
  2. 新建一个相同长度的字符数组
  3. 从 0 开始迭代到 (sourceStringLength-1)
  4. 在每次迭代中,获取最后一个字符 从源数组的末尾开始填充新数组
  5. 从这个新数组创建一个新字符串

        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);
    

我认为问题出在你对反向的定义上,也许你有这样的东西:

String reverse;

然后你不初始化你的 "reverse" 所以当你的程序在你的循环中进行第一次连接时,它看起来像这样:

reverse = null + secondname.charAt(i);

空值被转换为字符串,因此它可以在输出中可见。

希望这些信息对您有所帮助。

祝你好运。