Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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 空实例上是否可以使用void函数?_Java - Fatal编程技术网

Java 空实例上是否可以使用void函数?

Java 空实例上是否可以使用void函数?,java,Java,我正试图为一个学校项目创建一个互联网的小演示,我决定用Java做这个,因为Java是我最有经验的语言,也是我大部分工作的语言 因此,我为域名系统创建了一个DNS的类型。我还创建了一个表,用于在中存储url和位置。 请参阅以下代码: 类别表: public class Table { private String url; private DNS dns; public Table(){ } public String getURL(){ //Retu

我正试图为一个学校项目创建一个互联网的小演示,我决定用Java做这个,因为Java是我最有经验的语言,也是我大部分工作的语言

因此,我为域名系统创建了一个
DNS
类型。我还创建了一个
,用于在中存储url和位置。 请参阅以下代码:

类别表:

public class Table {

    private String url;
    private DNS dns;

    public Table(){
    }

    public String getURL(){ //Return url of a server
        return this.url;
    }

    public void add(Something something){
        //Some code to add something
    }
}
类别DNS:

public class DNS {

    private Table[] table = new Table[50];

    public DNS(){
        //Some code here
    }

    public void add(Something something){ //Add a server to the DNS' table

        int i = 0;
        while(this.table[i].getURL() != null){ //NullPointerException
            i++;
        }
        this.table[i].add(something);
    }
}
如果我想使用DNS类中的
void add()
,我必须知道
表中的下一个空位置是什么。因此,我尝试检索一些
url
,如果它说
url==null
,我知道我有一个空位置。

但是,我在
while(this.table[I].getURL()!=null)处得到一个
NullPointerException
{
。这让我想知道是否有可能
返回
一个
null
的变量。这有可能吗?如果有,我在这里做错了什么?

对于您的用例,使用
java.util.List
要容易得多。事实上,我建议使用
java.util.ArrayList

它就像一个数组,只是它可以增长

表[i]
方法存在问题,因为在当前的代码设置中,您没有正确地检测到最大i,因此,您走过数组的末尾。要以数组方式修复它,您将使用for循环

for (int i = 0; i < table.length; i++) {
   // now we will loop between 0 and the last element of the array.
   ... table[i] ...
}

<>除了使条目更容易添加之外,<>代码> ARARYLIST//>将使条目更容易移除。没有它,通常你必须编写一些代码来将项目移动到数组中间的孔中,如果你每次删除一个条目。

< P>对于你的用例,使用<代码> java .UTIL.List要容易得多。实际上,我建议使用
java.util.ArrayList

它就像一个数组,只是它可以增长

表[i]
方法存在问题,因为在当前的代码设置中,您没有正确地检测到最大i,因此,您走过数组的末尾。要以数组方式修复它,您将使用for循环

for (int i = 0; i < table.length; i++) {
   // now we will loop between 0 and the last element of the array.
   ... table[i] ...
}

<> P>除了使条目更容易添加之外,<>代码> AlayList将更容易移除条目。没有它,通常你必须编写一些代码来将项目移动到数组中间的孔中,如果每次删除一个条目。

< p>初始化了<代码>表< /代码>数组,但尚未初始化任何条目。,因此它们都是
null
。 例如,您可以在构造函数中执行以下操作:

public DNS(){
    for (int i = 0; i < table.length; ++i) {
        table[i] = new Table();
    }
}
publicdns(){
对于(int i=0;i
您已经初始化了
数组,但尚未初始化其任何成员,因此它们都是
null
。 例如,您可以在构造函数中执行以下操作:

public DNS(){
    for (int i = 0; i < table.length; ++i) {
        table[i] = new Table();
    }
}
publicdns(){
对于(int i=0;i
可以返回空变量,但您可以简单地检查
此.table[i]!=null。
可以返回空变量,但您可以简单地检查
此.table[i]!=null。

等等,你是在问为什么你会得到NPE,或者如果你的方法是用
void
声明的,是否有可能返回一些东西?一个void方法
public void getURL()
不能返回值。这是一个输入错误吗?你的测试不应该是
这个表[i]!=null?
@Eran这是一个输入错误,ty。等等,你是在问为什么你会得到NPE,或者如果你的方法是用
void
声明的,是否有可能返回一些东西?void方法
public void getURL()
不能返回值。这是一个输入错误吗?你的测试不应该是
这个表[i]!=null?
@Eran这是一个输入错误,ty。除了多种类型之外,是否执行
ArrayList
,如我的案例
DNS
String
?@EdwinBuckYes,一个
ArrayList
可以容纳任何对象。除了多种类型之外,是否执行
ArrayList
,如我的案例
DNS
String
?@EdwinBuckYes,一个
Ar光线列表
可以容纳任何对象。好吧,这很有效。我从来没有想过这一点,因为我不使用
字符串[]
,但我想使用
字符串[]
这是在它的构造函数中完成的,对吗?
新字符串[50]
还将为您提供一个50
null
s的数组。这是有意义的,因为我检查了
null
实例的字段,我得到了
null
返回,因为实例是
null
,因此字段也是。我现在得到了它!谢谢。这是有效的。我从来没有想到过这一点,因为我没有使用de>String[]
,但我想使用
String[]
这是在它的构造函数中完成的,对吗?
新字符串[50]
还将为您提供一个50
null
s的数组。这很有意义,因为我检查了
null
实例的字段,所以返回了
null
,因为实例是
null
,因此字段也是。我现在就得到了它!谢谢。