首页 > 解决方案 > 错误:不兼容的类型:String[] 无法转换为 String

问题描述

当以以下方式输入字符串时,我尝试使用字符串拆分函数在java中输入6乘6矩阵,并打印矩阵。

1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6

我得到的输出是

Main.java:24: error: incompatible types: String[] cannot be converted to String
                                c[j] = b[i].split(" ");

我的代码:

import java.util.*;
import java.io.*;

class Solution {
    public static void main(String args[]) {
        Scanner s = new Scanner(System.in);
        int a[][] = new int[6][6];
        String b[] = new String[6];

        for (int i = 0; i < 6; i++) {
            b[i] = s.nextLine();
        }

        // initializing the 2d array a[][]
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 6; j++) {
                String c[] = new String[6];
                c[j] = b[i].split(" ");
                a[i][j] = Integer.parseInt(c[j]);
            }
        }

        // printing the input array
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 6; j++) {
                System.out.print("\ta[i][j]\t");
            }
        }
    }
}

请建议我如何克服这个错误

标签: javamultidimensional-arraysplitstring-formattingtostring

解决方案


split()函数的返回类型是数组类型。因为您要求 java 将每个值作为单独的值给我,并由" "(空格)分隔。所以java会为每个值创建一个数组并返回给你。为了存储数组,您需要一个数组类型的变量。这里c表示一个数组,但c[j]表示数组的单个索引。

您可以更改您的代码,如:

for (int i = 0; i < 6; i++) {
    String c[] = b[i].split(" ");
    for (int k = 0; k < c.length; k++) {
        a[i][k] = Integer.parseInt(c[k]);
    }
}

输入是整数,稍后您将它们转换为整数,我建议您将输入作为整数,如下所示:

class Solution {
    public static void main(String args[]) {
        Scanner s = new Scanner(System.in);
        int a[][] = new int[6][6];

        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 6; j++) {
                a[i][j] = s.nextInt();
            }
        }

        // printing the input array
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 6; j++) {
                System.out.print("\ta[i][j]\t");
            }
        }
    }
}

推荐阅读