【问题标题】:Splitting an inputted string by comma and space用逗号和空格分割输入的字符串
【发布时间】:2023-03-15 02:16:01
【问题描述】:
        while(scan.hasNext()){
        String line = scan.next();
        String[] tempArray = line.split(",\\s*");

        for (int i=0; i<3; i++){
            System.out.println(tempArray[i]);
        }

我的输入文件如下所示:

A, 0, 3 
C, 2, 2 
BB, 3, 3 
DA, -3, 0 
ED, 2, -2

它返回 A,然后给我一个错误。什么给了?

【问题讨论】:

  • 越界异常:1,在 System.out.println(tempArray[i]);行
  • 尝试使用scan.nextLine()line.split (",")

标签: java arrays string input split


【解决方案1】:

我会用逗号分开,然后trim()String

while(scan.hasNextLine()){                   // <-- hasNextLine()
  String line = scan.nextLine();             // <-- nextLine()
  String[] tempArray = line.split(",");      // <-- split on the comma.

  for (int i=0; i<tempArray.length; i++){    // <-- use the array length
    System.out.println(tempArray[i].trim()); // <-- trim() the String
  }
}

【讨论】:

    【解决方案2】:
    String line = scan.next();
    

    对于您的输入文件,第一次访问时,line 将等于 "A,",这不是您想要的。

    这是因为Scanner#next() 只会向上读取直到出现在输入文件中A,0, 之间的空白字符。因此,为什么只返回A,

    改为使用

    String line = scan.nextLine();
    

    它将一直读到换行符。所以第一个循环会将line 设置为"A, 0, 3"


    调试确实有助于提高编程能力。打印出line 的返回以查看正在处理的内容肯定会对此有所帮助。然后能够弄清楚产生这些结果的原因要容易得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2019-10-03
      相关资源
      最近更新 更多