【问题标题】:JAVA-How to split string to int array based on spacesJAVA-如何根据空格将字符串拆分为int数组
【发布时间】:2016-02-23 18:49:09
【问题描述】:

我有多行输入,其中每一行都是矩阵行。我将此行保存为字符串,然后我想根据空格拆分此字符串,但由于更好的可读性,未定义数字之间的空格数。因此,当我想在之后解析为 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

【问题讨论】:

  • 你能提供你得到的错误信息吗?有了这个,我们可以更轻松地为您提供帮助。
  • 你的line.split("\\s+"); 应该已经成功了。你看到了什么错误?

标签: java matrix input split


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    Java how to replace 2 or more spaces with single space in string and delete leading spaces only

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

    【讨论】:

    • @Aleksandar 所说的是一种简单的方法。只需使用 trim() 将多个空格替换为单个空格,然后执行您已经完成的操作。
    【解决方案3】:

    如果您正确编写逻辑部分,您可以使用空格作为分隔符,也可以使用 if/then 语句(测试 isWhitespace 或 isDigit)排除多余的空格。

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

    我不会为您编写代码,但是有很多解决方法可以解决这个问题...问题都在于您对存储在 String 中的内容的定义,真的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多