首先,我对Java很新,很抱歉,如果这个问题非常简单.
问题是:我有一个String[] s分裂字符串,其中每个项目都是一个数字.我想将这些项目s投入到int[] n.
s[0]包含n有效保留的项目数s.length-1.我正在尝试使用foreach循环:
int[] n;
for(String num: s){
//if(n is not initialized){
n = new int[(int) num];
continue;
}
n[n.length] = (int) num;
}
Run Code Online (Sandbox Code Playgroud)
现在,我意识到我可以使用这样的东西:
int[] n = new int[(int) s[0]];
for(int i=1; i < s.length; i++){
n[i-1] = (int) s[i];
}
Run Code Online (Sandbox Code Playgroud)
但是我相信我将来会遇到"如果n未初始化则初始化它"的问题.
eri*_*son 13
你不能投了String一个int.Java是强类型的,并且没有像脚本语言中那样的隐式类型转换.
要将a转换String为an int,请使用显式转换,例如Integer.parseInt(String).
使用默认值初始化所有成员变量和数组元素.对于int类型,值为0.对于引用类型(任何子类型Object),默认值为null.局部变量不会获得默认值,但编译器会分析代码以确保在读取变量之前分配值.如果没有,代码将无法编译.
我想你想要的是这样的:
int[] n = new int[Integer.parseInt(s[0]);
for (int idx = 0; idx < n; ++idx)
n[idx] = Integer.parseInt(s[idx + 1]);
Run Code Online (Sandbox Code Playgroud)
Joa*_*uer 12
您无法检查代码中是否初始化了变量,因为从定义中读取可能尚未初始化的变量会导致编译时错误.
如果变量不是基本类型并且在初始化后不是有效值,则可以将变量初始化为null并检查该值. null
在具体示例中,您展示的第二个代码肯定会更清晰.