繁体   English   中英

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

[英]JAVA-How to split string to int array based on spaces

我有多行输入,其中每一行都是矩阵行。 我将此行另存为字符串,此后我想根据空格拆分此字符串,但由于可读性更好,所以未定义数字之间的空格数。 因此,当我以后要解析为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
 5 20 10  7 12
 1  2  3  5  9
10 15 20 35  2
 2 15  5 15  2

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

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

只需用单个空格替换多个空格

参见Java如何用字符串中的单个空格替换2个或更多空格并仅删除前导空格

然后,像通常一样进行拆分。

如果正确编写逻辑部分,则可以将空间用作定界符,还可以使用if / then语句(测试isWhitespace或isDigit)来占用多余的空间。

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

我不会为您编写代码,但是有很多解决此问题的方法...问题实际上就是您对存储在String中的内容的所有定义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM