意外结果:字符串旁边为null import java.util.*; 公共班机{ 公共静态void main(字符串[]args){ 扫描仪scan1=新扫描仪(System.in); int test=scan1.nextInt(); 字符串[]sArr=新字符串[测试]; sArr[0]=“”; //字符串s=“”; //StringBuilder sB=新的StringBuilder; int y=0; 而(测试>0){ 字符c; 测试--; 扫描仪scan2=新扫描仪(System.in); Scanner scan3=新扫描仪(System.in); int n=scan2.nextInt(); String str=scan3.nextLine(); String[]nSplit=str.split(“(?

意外结果:字符串旁边为null import java.util.*; 公共班机{ 公共静态void main(字符串[]args){ 扫描仪scan1=新扫描仪(System.in); int test=scan1.nextInt(); 字符串[]sArr=新字符串[测试]; sArr[0]=“”; //字符串s=“”; //StringBuilder sB=新的StringBuilder; int y=0; 而(测试>0){ 字符c; 测试--; 扫描仪scan2=新扫描仪(System.in); Scanner scan3=新扫描仪(System.in); int n=scan2.nextInt(); String str=scan3.nextLine(); String[]nSplit=str.split(“(?,java,Java,基本上,您正在创建一个字符串数组。 您只是将数组的第一个元素初始化为“” sArr[0]=“” 这就是为什么除了第一个元素之外,其他每个元素前面都有一个null 所以这个语句sArr[test]+=c;将为字符串数组中所有未初始化的字符串添加一个空值 我建议您可以这样做,而不是sArr[0]=“” Arrays.fill(sArr,“”) 它将数组中字符串的所有值初始化为“” Arrays是在要导入的UTIL下找到的类。IfsArr[test]为空,您向其中添加一个字符串,然后在开始时得到一个带

基本上,您正在创建一个字符串数组。 您只是将数组的第一个元素初始化为“” sArr[0]=“”

这就是为什么除了第一个元素之外,其他每个元素前面都有一个null

所以这个语句sArr[test]+=c;将为字符串数组中所有未初始化的字符串添加一个空值

我建议您可以这样做,而不是sArr[0]=“” Arrays.fill(sArr,“”) 它将数组中字符串的所有值初始化为“”


Arrays是在要导入的UTIL下找到的类。

If
sArr[test]
为空,您向其中添加一个字符串,然后在开始时得到一个带有
null
的字符串。基于System.in,您应该只使用一个扫描仪。这对解决此问题没有帮助,但可能会导致将来的错误。您是否尝试过自己调试它?thx khelwood,NomadMaker如何仅使用一个扫描仪?目的是什么e使用多台扫描仪?您可以在整个跑步过程中自由使用。
import java.util.*;

public class Main {

public static void main(String[] args) {


    Scanner scan1 = new Scanner(System.in);
    int test = scan1.nextInt();
    String[] sArr = new String[test];
    sArr[0] = "";
    // String s = "";
    //  StringBuilder sB = new StringBuilder(s);
    int y = 0;

    while (test > 0) {
        char c;
        test--;


        Scanner scan2 = new Scanner(System.in);
        Scanner scan3 = new Scanner(System.in);

        int n = scan2.nextInt();
        String str = scan3.nextLine();
        String[] nSplit = str.split("(?<=\\G.)");


        int[] x = new int[n];


        for (int i = 0; i < n * 4 - 3; i += 4) {
            nSplit[i] += nSplit[i + 2];
            nSplit[i + 1] += nSplit[i + 3];
        }


        for (int i = 0, j = 0; i < x.length; i++, j += 4) {
            x[i] = Integer.parseInt(nSplit[j]) + Integer.parseInt(nSplit[j + 1]);
            c = (char) x[i];

            sArr[test] += c;

        }


    }


    for (int i = sArr.length-1; i >-1; i--) {

        System.out.println(sArr[i]);
    }

}
}