Java 一个数组中有多少维度没有值
我有点迷路了(仍在读罗恩·杰弗里斯的书)。下面是一个简单的类:Java 一个数组中有多少维度没有值,java,arrays,Java,Arrays,我有点迷路了(仍在读罗恩·杰弗里斯的书)。下面是一个简单的类: public class Model{ private String[] lines; public void myMethod(){ String[] newLines = new String[lines.length + 2]; for (i = 0, i <= lines.length, i++) { newLines[i] = lines[i]
public class Model{
private String[] lines;
public void myMethod(){
String[] newLines = new String[lines.length + 2];
for (i = 0, i <= lines.length, i++) {
newLines[i] = lines[i];
}
}
}
公共类模型{
私有字符串[]行;
公共方法(){
字符串[]换行符=新字符串[lines.length+2];
对于(i=0,i行将为null,因此lines.length将引发异常
我相信您的另一个类初始化“Model”不会有帮助,因为line本身是私有的。事实上,您对Model所做的任何操作在至少30个状态下都可能是非法的。line将为null,因此Lines.length将引发异常
我相信您的另一个类初始化“Model”不会有帮助,因为行本身是私有的。事实上,您对Model所做的任何操作在至少30个状态下都可能是非法的。行被初始化为null
,请检查null或以以下方式初始化它:
private String[] lines = new String[0];
行初始化为null
,请检查是否为null或按以下方式初始化:
private String[] lines = new String[0];
您无法通过将模型实例设置为字符串数组来初始化它。实际上,我很惊讶编译器甚至允许您尝试
如果您确实希望使用外部数组初始化模型,则应为将数组作为参数的模型类创建一个构造函数
例如:
public class Model {
private String []lines;
public Model(String [] inLines)
{
lines = inLines;
}
}
用法:
myStringArray = new String[0];
myModel = new Model(myStringArray);
您无法通过将模型实例设置为字符串数组来初始化它。实际上,我很惊讶编译器甚至允许您尝试
如果您确实希望使用外部数组初始化模型,则应为将数组作为参数的模型类创建一个构造函数
例如:
public class Model {
private String []lines;
public Model(String [] inLines)
{
lines = inLines;
}
}
用法:
myStringArray = new String[0];
myModel = new Model(myStringArray);
我认为您的示例可能与基于您的描述的实际代码不同。我认为问题在于数组是基于零的,因此数组初始化为:
字符串[]行=新字符串[0]
没有任何元素
您需要更改循环,以便检查索引是否严格小于数组的长度。正如其他人所指出的,在尝试引用数组之前,您还需要确保数组本身不为null
我对您的代码的看法:
public class Model{
private String[] lines = new string[0];
public Model( string[] lines ) {
this.lines = lines;
}
public void myMethod(){
int len = 2;
if (lines != null) {
len = len + lines.length;
}
String[] newLines = new String[len];
for (i = 0, i < lines.length, i++) {
newLines[i] = lines[i];
}
}
}
公共类模型{
私有字符串[]行=新字符串[0];
公共模型(字符串[]行){
这条线=线;
}
公共方法(){
int len=2;
如果(行!=null){
len=len+lines.length;
}
字符串[]换行符=新字符串[len];
对于(i=0,i
根据您的描述,我认为您的示例可能与实际代码不同。我认为问题在于数组是基于零的,因此数组初始化为:
字符串[]行=新字符串[0]
没有任何元素
您需要更改循环,以便检查索引是否严格小于数组的长度。正如其他人所指出的,在尝试引用数组之前,您还需要确保数组本身不为null
我对您的代码的看法:
public class Model{
private String[] lines = new string[0];
public Model( string[] lines ) {
this.lines = lines;
}
public void myMethod(){
int len = 2;
if (lines != null) {
len = len + lines.length;
}
String[] newLines = new String[len];
for (i = 0, i < lines.length, i++) {
newLines[i] = lines[i];
}
}
}
公共类模型{
私有字符串[]行=新字符串[0];
公共模型(字符串[]行){
这条线=线;
}
公共方法(){
int len=2;
如果(行!=null){
len=len+lines.length;
}
字符串[]换行符=新字符串[len];
对于(i=0,i
看看我的答案-我想这会让你了解Java和C/C++中数组初始化之间差异的背景。看看我的答案-我想这会让你了解Java和C/C++中数组初始化之间差异的背景。什么语言?我重新标记为Java,但可能是C#(我想,我不是C#程序员)什么语言?我重新标记为Java,但可能是C#(我想,我不是C#程序员)你是对的,我的示例完全失败了。Ron Jeffries的结构是一个记事本类和一个他称为“模型”的文本处理类在本书的前半部分。记事本有文本框,用数组实例化模型,并在模型中插入换行符。没错,我的示例完全失败了。Ron Jeffries的结构是一个记事本类和一个文本操纵类,他称之为“模型”在本书的前半部分,记事本有一个文本框,用数组实例化模型,并在模型中插入换行符。