意外结果:字符串旁边为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(“(?
基本上,您正在创建一个字符串数组。 您只是将数组的第一个元素初始化为“” sArr[0]=“” 这就是为什么除了第一个元素之外,其他每个元素前面都有一个null 所以这个语句sArr[test]+=c;将为字符串数组中所有未初始化的字符串添加一个空值 我建议您可以这样做,而不是sArr[0]=“” Arrays.fill(sArr,“”) 它将数组中字符串的所有值初始化为“”意外结果:字符串旁边为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]为空,您向其中添加一个字符串,然后在开始时得到一个带
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]);
}
}
}