2015-06-26 3 views
1

Привет, получите ошибку и не знаю почему. Вот мой код для вызова.Ошибка несовместимого типа для строки []

public class Solution { 
    static void displayPathtoPrincess(int n, String [] grid){ 

    } 
    public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    int m; 
    m = in.nextInt(); 
    String grid[] = new String[m]; 
    for(int i = 0; i < m; i++) { 
     grid[i] = in.next(); 


    } 
    int[] x; 
    x = new int[m-1]; 
    x[0] = 0; 
    String p; 
    String single[]; 
    single = new String[(m*m)]; 
    for(int i = 0; i < (m); i++){ 
    for(int b = 0; b <= m; b++){   
     single[b] = (grid[i].split("(?!^)")); 

      System.out.println(p); 
    } 


    } 




displayPathtoPrincess(m,grid); 
} 
} 

Код не в чистом виде или в каком-либо полном, но когда я запускаю его я получаю эту ошибку:

Solution.java:29: error: incompatible types 
single[b] = (grid[i].split("(?!^)")); 
^ 
required: String 
found: String[] 
1 error 

Затем я попытался использовать обычную строку Thats не массив не работал. Затем я попытался просто вставить строку, где grid[i] есть и что тоже не работает. Мне нужна помощь!

+0

Пожалуйста код отступа образца при проводке его. –

+0

Sry Я только начал, вы можете объяснить, что это значит? –

+0

Не беспокойтесь! В принципе, когда вы набираете {, строки после того, как он должен быть отступом ~ 4 пробела, пока вы не дойдете до}, чтобы было легко увидеть, что внутри блока {}. Два из ваших утверждений «для» делают это правильно ... но третье не делает, что делает код более трудным для чтения. –

ответ

1

Метод split() возвращает массив String[], и вы пытаетесь вставить массив в String.

Просто измените свой код на этот:

String single[][]; 
single = new String[(m * m)][]; 
for (int i = 0; i < (m); i++) { 
    for (int b = 0; b <= m; b++) { 
     single[i*m+b] = (grid[i].split("(?!^)")); 
     System.out.println(p); 
    } 
} 
displayPathtoPrincess(m, grid); 
+0

Спасибо за помощь! Это работает, но есть все равно, где я могу получить его, чтобы назначить одну строку. Например, у меня есть строка «abc», я могу ее разбить и быть Firstletter = «a» Seconfletter = «b» и Thridletter = «c». Сейчас он создает массив, похожий на [a, b, c]. P.S Я должен был более конкретно не винить вас. –

+0

@JTattack Я не понимаю, что вы просите. Пожалуйста, будьте более ясны. – afzalex

+0

Извините. Прямо сейчас он отпечатывает один массив с каждой частью, которую он распался внутри. Мне было интересно, можно ли получить каждую часть .split распался. Вместо [a, b, c] оно будет [a] [b] [c]. Надеюсь, что это имеет больше смысла. –

1

Ошибка в том, что метод split() возвращает массив строк String[]. Но вы пытаетесь присвоить его String single[b].

Редактировать: single[b] не является массивом. Это обычная строка. single - массив.

1

split Строка метод возвращает массив, и вы не можете присвоить массив в строку:

single[b] = (grid[i].split("(?!^)")); 

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

1

Вот что вы собирались сделать:

String[] single = grid[i].split("(?!^)"); 

Когда вы делаете вызов String.split() Java возвращает уже выделенный String[] массив.

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

Смежные вопросы