0

我是一个java初学者,我有一个关于从文本文件扫描的小问题假设我有一个像这样的文本文件

abc
012
4g5
(0 0 0)
(0 1 3)
(1 2 6)
(1 1 0)
abcde
blahblah

现在我想为括号内的字符串创建一个数组,这意味着如何告诉扫描仪只扫描从第一个开括号开始的字符串,在以下右括号之后重置数组输入,并最终在最后一个右括号。这是我到目前为止所拥有的:

*对于数组,它将第一个数字作为row#,第二个数字作为col#,第三个数字作为值

while (file.hasNext()) {
    if (file.next().equals("(")) {
        do {
            2Darray[Integer.parseInt(file.next())][Integer.parseInt(file.next())] = file.next(); 

        }
        while (!file.next().equals(")"));
}

谢谢

4

1 回答 1

3

我建议您使用RegEx来匹配您的参数。

不得不提一下,在下面的情况下该文件BufferedReader. 记录你自己

while ((line = file.readLine()) != null)
{
    if( line.matches("\\((.*?)\\)") ) // Match string between two parantheses  
    {
         String trimmedLine = line.subString(1, line.length - 1); // Takes the string without parantheses
         String[] result = trimmedLine.split(" "); // Split at white space   
    }
}

// result[0] is row#
// result[1] is col#
// result[2] is value

此代码中的一个缺陷是您必须尊重您在问题中提到的文本行格式(例如"(3 5 6)")。

于 2013-08-08T10:00:44.923 回答