You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用StringTokenizer统计行数、令牌数、整数个数及和并解决Java编译报错

错误原因

  • 语法混用错误:不能在自增/累加表达式前加变量类型关键字,int lineCount++属于非法写法,Java会将这行识别为新变量声明语句,而声明语句不支持接++操作,因此会抛出缺分号的编译错误。
  • 作用域配置错误:lineCount、tokenCount、intCount、intSum这几个计数器变量需要声明在循环逻辑的外层,要是写在while循环内部,不仅每次循环都会重置计数,循环结束后打印结果的代码也无法访问这些变量。
  • 大小写错误:Java是大小写敏感的语言,字符串转整数的方法是Integer.parseInt(),你写成了小写开头的integer.parseInt(),不符合语法规范。
  • 笔误与导包错误:导包语句import java.BufferedReader路径错误,BufferedReader属于java.io包;创建输入流的代码中newjava.io.InputStreamReader少了空格,应为new java.io.InputStreamReader。
  • 逻辑漏洞:判断命令行参数为空时仅打印了提示,没有终止程序执行,后续访问args[0]会直接触发数组越界异常。

修改后可运行代码

import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.FileInputStream;

public class mcmahon_p1 {
    public static void main (String[] args) {
        // 提前在外层声明计数器并初始化
        int lineCount = 0;
        int tokenCount = 0;
        int intCount = 0;
        int intSum = 0; 

        if(args.length == 0) {
            System.out.println("Please enter a command line argument.");
            // 参数为空直接退出,避免后续逻辑报错
            System.exit(0);
        }

        try {
            BufferedReader input = new BufferedReader(new InputStreamReader(new FileInputStream(args[0])));
            String inn;
            while( (inn = input.readLine()) != null) {
                lineCount++;
                inn = inn.toLowerCase(); 
                StringTokenizer st = new StringTokenizer(inn);

                while(st.hasMoreTokens()) {
                    tokenCount++;
                    String token = st.nextToken();              
         
                    try {
                        int v = Integer.parseInt(token);
                        intCount++;
                        intSum +=v;
                    } catch(Exception e) {
                        // 非整数直接跳过
                    }
                }
            }    
            System.out.println(lineCount);
            System.out.println(tokenCount);
            System.out.println(intCount);
            System.out.println(intSum);
            input.close();
        } catch(Exception e) {
            System.out.println(e.toString());
            System.exit(0);
        }
    }
}

内容的提问来源于stack exchange,提问作者TinkMain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:15:03