ошибка несовместимых типов String [] - PullRequest
0 голосов
/ 03 февраля 2012

Я получаю это сообщение об ошибке, когда пытаюсь запустить свою программу

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], ноэто не позволит мне сделать это, потому что split сохраняет только строки, а epostadr является строкой [], что я могу сделать, чтобы изменить это?Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

4 голосов
/ 03 февраля 2012
String [] epostadr = split[3]; 

split[3] относится к типу String, а epostadr относится к типу String[]

Может быть, вы хотите объявить epostadr как String? [не уверен, что я следую тому, чего вы пытаетесь достичь]

2 голосов
/ 03 февраля 2012

Во-первых, у вас нет массива:

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 / программированию или, по крайней мере, изучить руководства по Java, доступные на веб-сайте Oracle.

0 голосов
/ 03 февраля 2012

Трудно точно понять, что вы пытаетесь сделать из этого кода, поэтому я пройдусь и дам вам знать, что радует.Похоже, вы пытаетесь взять строку, хранящуюся в переменной ordre, и разделить ее так, чтобы у каждого слова был свой индекс в массиве строк с именем split.

Так что, если ordre содержала строку «Мое имя»is Jones. "

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

Эта строка создаст массив с именем split, содержащий следующие значения {My, name, is, Jones}

Вот часть, которую, возможно, вы можете уточнить,похоже, что вы хотите, чтобы эти значения были в строковом массиве epostadr, или, может быть, просто в 3-м индексе, который в данном случае будет «Jones», поскольку индексы начинаются с 0.

Помещение значений в epostadr будет избыточнымпоскольку split уже содержит эти значения.Но если вы действительно хотите скопировать его, вы можете сделать это.

String [] epostadre = split;

Если вам нужен только третий индекс, epostadre не может быть строковым массивом, но должен быть объявлен как строка, и вы должны сделатьthis ...

String epostadre = split[3];

Здесь вы объявляете строку, которая будет содержать одно значение, и устанавливаете ее равной строке, содержащейся в третьем индексе разбиения, то есть Джонсе.split [0] = "My" split [1] = "name" и т. д.

Надеюсь, это поможет, дайте мне знать, если вам нужно больше разъяснений.

0 голосов
/ 03 февраля 2012

Когда вы используете split для String, он превращается в String [], так что вы получаете это право, когда делаете split как String []. Однако в каждом слоте массива есть строка. В основном вы пытаетесь создать epostadr, который вы объявили как String [], String, и вот откуда берутся несовместимые типы. Строка [] не может быть Строкой.

...