为什么我的输出中有空字符?

时间:2019-03-17 01:51:55

标签: java arrays string split

因此,我尝试制作一个程序,该程序应该从用户那里获取一个String的输入并反转每个String,例如:stack-> kcats。我的程序几乎可以正常工作,除了在每个字符串的开头也将其设置为“ null”!

import java.util.Scanner;
public class Q9 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a string.");
        String s = sc.nextLine();
        String[] w = s.split("\\s+");
        String[] r = new String[w.length];
        for (int i = 0; i < w.length; i++) {
            for (int j = w[i].length() - 1; j >= 0; j--) {
                r[i] += w[i].charAt(j);
            }
        }
        String t = String.join(" ", r);
        System.out.println(t);
    }
}

这是一个简单的问题,但是我一生都无法弄清楚为什么得到此输出。

Enter a string.
stack
nullkcats

第一行是我的提示,第二行是我的输入,第三行是我收到的输出。谁能解释为什么出现“ null”以及我该如何解决?

1 个答案:

答案 0 :(得分:1)

那是因为Java中对象的默认值是Null。这里,字符串数组索引值(即r [i])最初为null。将其追加到字符结果为null并输出字符。

  • 尝试初始化默认值
  • 使用Java编辑器调试功能查看每个步骤的值。