【问题标题】:error: incompatible types: String[] cannot be converted to String错误:不兼容的类型:String[] 无法转换为 String
【发布时间】:2020-08-10 04:01:40
【问题描述】:

当以以下方式输入字符串时,我尝试使用字符串拆分函数在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");
            }
        }
    }
}

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

【问题讨论】:

  • 当我们调用String的split函数返回String[]。所以 c[j] 不能等于 String[]。你想通过拆分在这里达到什么目的?

标签: java multidimensional-array split string-formatting tostring


【解决方案1】:

当我们调用 String 的 split 函数时,返回 String[]。所以c[j](类型为String)不能等于String[]

以下代码应替换为:

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

【讨论】:

    【解决方案2】:

    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");
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-07
      • 2015-07-17
      • 1970-01-01
      • 2021-08-28
      • 2016-11-09
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      相关资源
      最近更新 更多