Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一个数组中有多少维度没有值_Java_Arrays - Fatal编程技术网

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的结构是一个记事本类和一个文本操纵类,他称之为“模型”在本书的前半部分,记事本有一个文本框,用数组实例化模型,并在模型中插入换行符。