不兼容的类型错误字符串[]

时间:2012-02-02 20:02:45

标签: java string compiler-errors

我尝试运行程序时出现此错误消息

error: incompatible types
        epost = split[3];
                     ^
required: String[]
found:    String

这是我的代码:

String [] split = ordre.split(" ");
String [] epostadr;
while(split >= 3) {
    String [] epostadr = split[3]; 
}   

我想在split [3]中保存epostadr,但它不会让我这样做,因为split只保存字符串,而epostadr是一个String [],我该怎么做才能改变它? 任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:4)

String [] epostadr = split[3]; 

split[3]的类型为String,而epostadr的类型为String[]

也许您想将epostadr声明为String? [不确定我是否遵循你想要达到的目标]

答案 1 :(得分:2)

首先,您没有阵列:

String [] epostadr;

这声明了一个变量,而不是分配给它的数组引用。

然后你有:

String [] epostadr = split[3]; 

这没有任何意义。 split[3]String;您不能将其分配给声明为String数组的变量。

如果您需要epostadr作为数组,则需要创建一个数组,然后分配它,然后将String放在特定位置:

String [] epostadr = new String[maxNumberOfStrings];
...
epostadr[index] = split[3];

编辑:这忽略了您的其余代码实际上并没有按照您的想法执行。你的while循环(如果写得正确)将永远循环; split.length永远不会改变。鉴于这些问题,您可能希望投资初学者的Java /编程指南,或至少阅读Oracle网站上提供的Java教程。

答案 2 :(得分:0)

当你在String上使用split时,它会使它成为一个String [],这样你在将split作为String []时就可以了。但是,在每个数组槽中都有一个String。你基本上是在尝试创建epostadr,你声明它是一个String [],一个String,这就是不兼容类型的来源。 String []不能是String。

答案 3 :(得分:0)

很难确切知道你要从这段代码中做些什么,所以我会通过并让你知道发生了什么。看起来你正试图取一个存储在变量ordre中的字符串,并将其拆分,以便每个单词在名为split的字符串数组中都有自己的索引。

因此,如果ordre包含字符串“我的名字是琼斯。”

String [] split = ordre.split(" ");

该行将创建一个名为split的数组,其中包含以下值{My,name,is,Jones}

以下是您可以澄清的部分,看起来您希望这些值在字符串数组epostadr中,或者可能只是第3个索引,在这种情况下将是“Jones”,因为索引从0开始。 / p>

将值放在epostadr中将是多余的,因为split已包含这些值。但如果你真的想要复制它,你可以这样做。

String [] epostadre = split;

如果你只想要第3个索引,epostadre不能是字符串数组,但必须声明为字符串,你会这样做...

String epostadre = split[3];

这里你要声明一个String,它将保存一个值,并将其设置为等于第三个分割索引中包含的字符串,即Jones。 split [0] =“My”split [1] =“name”等等。

我希望这有帮助,如果您需要更多说明,请告诉我。