为了账号安全,请及时绑定邮箱和手机立即绑定

用来自字符串的输入填充二维数组的行

用来自字符串的输入填充二维数组的行

慕运维8079593 2022-07-27 11:23:41
我有以下问题:给定矩阵的每一行的值,列由空格分隔 - 所以我在字符串数组中输入所有行值,删除空格并将数字解析为 int 数组。现在每一行的值看起来像 1 个数字“12345”,而它们应该是“1 2 3 4 5”。如何首先分隔数字,然后通过将元素添加到每一行来填充我的矩阵?谢谢!这是我的代码:    String n1 = input.nextLine ();    int n = Integer.parseInt(n1); //rows of the matrix    String[] arr = new String [n]; //contains all the rows of the matrix    int [] array = new int [arr.length]; // contains all the elements of the rows of the matrix without whitespace    for (int i = 0; i < arr.length; i++) {        arr [i] = input.nextLine().replaceAll("\\s+","");        array[i] = Integer.parseInt(arr[i]);    }    int matrix [][] = new int [n][arr[0].length()];
查看完整描述

3 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

您应该split()通过一些字符输入字符串(在您的示例中为空格)。


示例如何转换String为数组String(使用split()方法)


// Example input

String input  = "1 2 3 4 5";


// Split elements by space

// So you receive array: {"1", "2", "3", "4", "5"}

String[] numbers = input.split(" ");


for (int position = 0; position < numbers.length; position++) {

    // Get element from "position"

    System.out.println(numbers[position]);

}

示例如何转换String为数组int


// Example input

String input = "1 2 3 4 5";


// Split elements by space

// So you receive array: {"1", "2", "3", "4", "5"}

String[] strings = input.split(" ");


// Create new array for "ints" (with same size!)

int[] number = new int[strings.length];


// Convert all of the "Strings" to "ints"

for (int position = 0; position < strings.length; position++) {

    number[position] = Integer.parseInt(strings[position]);

}


查看完整回答
反对 回复 2022-07-27
?
侃侃无极

TA贡献2051条经验 获得超10个赞

很难说,但据我了解,您正试图通过扫描仪逐行输入矩阵。这可以解决你的问题。


    Scanner scanner = new Scanner(System.in);

    //number of rows

    int n = Integer.parseInt(scanner.nextLine());

    int[][] matrix = new int[n][];

    for(int i=0;i<n;i++) {

        String line = scanner.nextLine();

        String[] numbers = line.split(" ");

        matrix[i] = new int[numbers.length];

        for(int j=0;j<numbers.length;j++) {

            matrix[i][j] = Integer.parseInt(numbers[j]);

        }

    }


查看完整回答
反对 回复 2022-07-27
?
长风秋雁

TA贡献1757条经验 获得超7个赞

在这里你有重要的问题:


for (int i = 0; i < arr.length; i++) {

    arr [i] = input.nextLine().replaceAll("\\s+",""); // loses the separator between the number

    array[i] = Integer.parseInt(arr[i]); // makes no sense as you want get all numbers submitted for the current row and no a single one

}

如果您在提交的每一行填充矩阵,则可以使用更少的变量来进行处理。

没有经过测试的代码,但您应该有所了解。


String n1 = input.nextLine();

int n = Integer.parseInt(n1); //rows of the matrix  


int matrix [][] = null; // init it later : as you would have the two dimensions knowledge


for (int i = 0; i < n; i++) {

    String[] numberToken = input.nextLine().split("\\s"); 


    // matrix init : one time

    if (matrix == null){ matrix [][] = new int[n][numberToken.length]; }


    // array of int to contain numbers of the current row

    int[] array = new int[numberToken.length];


    // map String to int. Beware exception  handling that you should do

    for (int j = 0; j < numberToken.length; j++){

        array[j] = Integer.parseInt(numberToken[j]); 

    }

    // populate current row of the matrix

    matrix[i] = array[j];

}


查看完整回答
反对 回复 2022-07-27
  • 3 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信