字符串[]

问题描述:

不兼容的类型错误嗨,得到一个错误,不知道为什么。在这里我的代码挑战。字符串[]

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 

然后我用一个普通字符串试过,那不是一个数组没有工作。然后,我试图只是在一个字符串grid[i]是,也没有工作。我坚持任何帮助表示赞赏!

+0

请缩进示例代码:

只要编辑你的代码这一点。 –

+0

Sry我刚开始可以解释一下这是什么意思? –

+0

不用担心!基本上,在你输入{}之前,你应该缩进~4个空格,然后输入一个{}行,以便很容易地看到{}块中的内容。你的两个“for”语句正确地做到了这一点......但是第三个没有,这使得代码难以阅读。 –

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

对不起。现在,它打印出一个单独的阵列,每个阵列里面都有分解。我想知道是否有可能让它的每一部分被分裂。它不是[a,b,c]就是[a] [b] [c]。希望更有意义。 –

错误是因为split()方法返回一个字符串数组String[]。但是你试图将它分配给一个字符串single[b]

编辑:single[b]不是一个数组。这只是一个普通的字符串。 single是一个数组。

字符串split方法返回一个数组,你不能数组指派给字符串:

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

因此错误。可能你需要将单个定义为二维数组并相应地使用它。

这里是你打算做的事:

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

当你拨打电话到String.split() Java将返回一个已经分配String[]阵列。

不幸的是,你从来没有完成你的代码,所以我们受到的限制远远不止于此。