2012-12-17 23 views
0

我看到你不能在数组上使用字符串标记器,因为你不能将String()转换为String[]。经过一段时间后,我意识到如果inputFromFile方法逐行读取它,我可以逐行标记它。我只是不知道该怎么做才能返回它的标记化版本。如何在数组上使用字符串标记器?

我假设在line=in.ReadLine();行我应该把StringTokenizer token = new StringTokenizer(line,",") ..但它似乎并没有工作。

任何帮助? (我必须标记逗号)。

public class Project1 { 

    private static int inputFromFile(String filename, String[] wordArray) { 
     TextFileInput in = new TextFileInput(filename); 
     int lengthFilled = 0; 
     String line = in.readLine(); 
     while (lengthFilled < wordArray.length && line != null) { 
      wordArray[lengthFilled++] = line; 
      line = in.readLine(); 
     }// while 
     if (line != null) { 
      System.out.println("File contains too many Strings."); 
      System.out.println("This program can process only " 
        + wordArray.length + " Strings."); 
      System.exit(1); 
     } // if 
     in.close(); 
     return lengthFilled; 
    } // method inputFromFile 

    public static void main(String[] args) { 
     String[] numArray = new String[100]; 
     inputFromFile("input1.txt", numArray); 
     for (int i = 0; i < numArray.length; i++) { 
      if (numArray[i] == null) { 
       break; 
      } 
      System.out.println(numArray[i]); 
     }// for 

     for (int i=0;i<numArray.length;i++) 
     { 
      Integer.parseInt(numArray[i]); 
     } 

    }// main 
}// project1 
+0

每读完一行,调用split方法。 String [] tokens = line.split(“,”);然后将该数组附加到wordArray中并递增计数器。 –

+0

@UsmanSaleem我尝试添加该行,但是它表示令牌永远不会被调用。我应该在哪里输入该代码,并且可以让我知道如何将它添加到wordarray中? – Snapple

回答

0

这就是我的意思:

while (lengthFilled < wordArray.length && line != null) { 
      String[] tokens = line.split(","); 
      if(tokens == null || tokens.length == 0) { 
       //line without required token, add whole line as it is 
       wordArray[lengthFilled++] = line; 
      } else { 
       //add each token into wordArray 
       for(int i=0; i<tokens.length;i++) { 
        wordArray[lengthFilled++] = tokens[i]; 
       } 
      } 

      line = in.readLine(); 
}// while 

可以有其他方法为好。例如,您可以使用StringBuilder将所有内容作为一个大字符串读取,并将它们分割为所需的令牌等。上述逻辑仅仅是为了指导您正确的方向。