2013-12-08 40 views
0

我已经创建了以下程序,并且我很少卡在这里。 下面是代码:读取文件StringTokenizer为int

class ProductNameQuan{ 
    public static void main(String[] args) 
    { 
     String fileName = "stockhouse.txt"; 
     StringTokenizer line; 
     String ProdName; 
     String quantity; 
     try { 
      BufferedReader in = new BufferedReader(new FileReader(fileName)); 
      line = in.readLine(); 
      while (line != null) { 
       ProdName = line.nextToken(); 
       quantity = line.nextToken(); 
       System.out.println(line); 
       line = in.readLine(); 
      } 
     in.close(); 
     } catch (IOException iox) 
     { 
      System.out.println("Problem reading " + fileName); 
     } 
    } 
} 

我试图找到该文件的前10个信息是通过阵列读取方式(ArrayList不是)PRODNAME和数量“加我栈中。的readLine(); propably不与StringTokenizer的兼容 现在的另一个问题是,我需要的数量是一个整数,而不是字符串的

该文件包含类似的东西: 球32个 网球322 火球。 54 .. 。 。 。 。 任何想法?

+0

任何理由使用数组,而不是'ArrayList'? – Maroun

+0

您发布的代码是不必要的。假设你已经正确地阅读了字符串,这对所有人来说都会更容易。 – givanse

+0

你可能会像'int quantity = Integer.parseInt(line.nextToken())那样解析字符串' –

回答

0

我会将此放在一个辅助功能,也可以叫做parseString

class ProductNameQuan { 
    public static void main(String[] args) 
    { 
     ... 
     try { 
      BufferedReader in = ... 
      line = in.readLine(); 
      while (line != null) { 
       ProductNameQuan.parseString(line); 
      } 
     } 
     ... 
    } 

    public static void parseString(String someString) 
    { 
     StringTokenizer st = new StringTokenizer(someString); 
     while (st.hasMoreTokens()) { 
      String token = line.nextToken(); 
      try { 
       int quantity = Integer.parseInt(token) 
       // process number 
      } catch(NumberFormatException ex) { 
       // process string token 
     } 
    } 

} 
+0

首先我要感谢您的快速回复,我真的很感动。你能帮我吗,我必须把上面的代码放到我的程序中吗?真的很抱歉也谢谢。 :) – user3079391

+0

现在我没有可用的JDK,我可以将所有的细节都解决掉,但是这应该给你一个总体思路。 – givanse