字符串到字符数组
String to Character Array
我的以下代码有问题:
public class stringToChar {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
char[] sCharArr;
String[] odd = new String[n];
String[] even = new String[n];
for(int i = 0; i < n; i++) {
sCharArr = in.next().toCharArray();
for(int j = 0; j < sCharArr.length; j++) {
if(j % 2 == 0)
even[i] += sCharArr[j];
else
odd[i] += sCharArr[j];
}
}
for(int i = 0; i < n; i++) {
System.out.println(even[i] + " " + odd[i]);
}
}
}
我的问题是输出结果中有一个 Null
。这是一个示例场景:
2
John
Cena
答案应该是:
Jh on
Cn ea
但我的代码答案是:
NullJh Nullon
NullCn Nullea
您的问题是新数组是用所有 null 字符串初始化的。那么您的代码 不是 为所有数组元素赋值,而只是为其中的一些元素赋值!
最后你打印你的数组,令人惊讶的是,那些 是 null 并且没有被改变的值仍然是 null(当你打印一个 null 字符串时......它打印 "null" [ 是的,null,而不是 Null;你的输出示例中有一个小错误]
你看,你从 0 迭代到 两个 数组的长度。如果数字是偶数,则将值放入 even[i];如果该值为奇数,则转到 odd[i]。让我们取 even - 在这种情况下,odd[i] 只是保持为空!
一种解决方法:
List<String> even = new ArrayList<>();
List<String> odd = new ArrayList<>();
而现在,不是在even/odd中设置某个索引;你只需要做:
even.add(some new value);
并添加这些单个字符:
even.add(new String(sCharArr));
这样做,偶数和奇数将(最终)包含您添加到每个列表的值;但没有 "residual" 空值。郑重声明:拆分字符串然后将它们拉回字符串数组的方式并不是解决问题的最 simple/straight 正向方法。
但我将 "further" 简化作为练习留给用户。
我的以下代码有问题:
public class stringToChar {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
char[] sCharArr;
String[] odd = new String[n];
String[] even = new String[n];
for(int i = 0; i < n; i++) {
sCharArr = in.next().toCharArray();
for(int j = 0; j < sCharArr.length; j++) {
if(j % 2 == 0)
even[i] += sCharArr[j];
else
odd[i] += sCharArr[j];
}
}
for(int i = 0; i < n; i++) {
System.out.println(even[i] + " " + odd[i]);
}
}
}
我的问题是输出结果中有一个 Null
。这是一个示例场景:
2
John
Cena
答案应该是:
Jh on
Cn ea
但我的代码答案是:
NullJh Nullon
NullCn Nullea
您的问题是新数组是用所有 null 字符串初始化的。那么您的代码 不是 为所有数组元素赋值,而只是为其中的一些元素赋值!
最后你打印你的数组,令人惊讶的是,那些 是 null 并且没有被改变的值仍然是 null(当你打印一个 null 字符串时......它打印 "null" [ 是的,null,而不是 Null;你的输出示例中有一个小错误]
你看,你从 0 迭代到 两个 数组的长度。如果数字是偶数,则将值放入 even[i];如果该值为奇数,则转到 odd[i]。让我们取 even - 在这种情况下,odd[i] 只是保持为空!
一种解决方法:
List<String> even = new ArrayList<>();
List<String> odd = new ArrayList<>();
而现在,不是在even/odd中设置某个索引;你只需要做:
even.add(some new value);
并添加这些单个字符:
even.add(new String(sCharArr));
这样做,偶数和奇数将(最终)包含您添加到每个列表的值;但没有 "residual" 空值。郑重声明:拆分字符串然后将它们拉回字符串数组的方式并不是解决问题的最 simple/straight 正向方法。
但我将 "further" 简化作为练习留给用户。