【问题标题】:reading file StringTokenizer to int读取文件 StringTokenizer 到 int
【发布时间】:2026-02-03 20:30:02
【问题描述】:

我创建了以下程序,但我有点卡在这里。 代码如下:

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);
       }
    }
}

我试图找到通过数组(不是数组列表)ProdName 和数量从文件中读取前 10 个信息的方法。”加上我在 in.readLine() 中的堆栈;可能与字符串标记器。 现在另一个问题是我需要数量是整数而不是字符串。

该文件包含以下内容: 球 32 网球 322 火球 54 .. . . . . 有什么想法吗?

【问题讨论】:

  • 有什么理由使用数组而不是ArrayList
  • 您发布的代码是不必要的。假设您已经正确阅读了字符串,这对所有人来说都会更容易。
  • 你可以像int quantity = Integer.parseInt(line.nextToken())一样解析字符串
  • 我必须指定数组输入行,这就是为什么我需要数组而不是数组列表。如果我可以通过 Arraylist 做到这一点
  • int quantity = Integer.parseInt(line.nextToken()) 我必须把这个放在哪里?但是我还是把它放在数量上,仍然有问题 in.readline

标签: java arrays filereader stringtokenizer


【解决方案1】:

我会把它放在一个辅助函数中,可能叫做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
        }
    }

}

【讨论】:

  • 首先我要感谢您的快速回复,我真的很感动。你能帮我把上面的代码放在我的程序中吗?真的很抱歉,也谢谢。 :)
  • 现在我没有可用的 JDK 来解决所有细节问题,但这应该会给你一个大致的想法。