Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA如何基于空格将字符串拆分为int数组_Java_Matrix_Input_Split - Fatal编程技术网

JAVA如何基于空格将字符串拆分为int数组

JAVA如何基于空格将字符串拆分为int数组,java,matrix,input,split,Java,Matrix,Input,Split,我有多行输入,其中每行是矩阵的行。我将这一行保存为字符串,然后我想根据空格分割这一字符串,但由于可读性更好,数字之间的空格数没有定义。因此,当我想在以后解析为int时,它会抛出一个错误,因为在某些地方有多个空格。有什么办法可以解决这个问题吗?谢谢 这是我的代码,我是如何解决的 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line; int[][] matrix=new int[n

我有多行输入,其中每行是矩阵的行。我将这一行保存为字符串,然后我想根据空格分割这一字符串,但由于可读性更好,数字之间的空格数没有定义。因此,当我想在以后解析为int时,它会抛出一个错误,因为在某些地方有多个空格。有什么办法可以解决这个问题吗?谢谢

这是我的代码,我是如何解决的

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
int[][] matrix=new int[n][n];
String[] temp;
for (int row = 0; row < n; row++) {
    line =br.readLine();
    temp = line.split("\\s+");
    for(int i=0;i<n;i++){
    matrix[i][row]=Integer.parseInt(temp[i]);
}

只需将多个空格替换为单个空格即可


然后像平常一样进行拆分。

问题是字符串开头有空格时:

"10 10  0 10  5".split("\\s+"); // ["10", "10", "0", "10", "5"]
" 5 20 10  7 12".split("\\s+"); // ["", "5", "20", "10", "7", "12"]
然后你会得到一个额外的空字符串。添加额外的
trim()
应有助于:

line.trim().split("\\s+");

如果您正确地写入了逻辑部分,您可以使用空格作为分隔符,还可以使用If/then语句(测试isWhitespace或isDigit)来避免额外的空格

老实说,您可以使用isDigit验证位置[i]处的项实际上是一个数字,然后将该数据存储在字符串中


我不会为你写代码,但是这个问题有很多解决方法。。。问题完全在于你对字符串中存储内容的定义。

Aleksandar所说的是一种简单的方法。只需使用
trim()
将多个空格替换为一个空格,然后执行您已经执行的操作。您能否提供收到的错误消息?当我们有此功能时,可以更轻松地帮助您。您的
line.split(\\s+)
应该已经成功了。你看到了什么错误?
line.trim().split("\\s+");