首页 > 解决方案 > 如何使用 StringTokenizer 计算行数、标记、整数 # 并获取整数总和?

问题描述

我对编程很陌生。此代码尝试计算行数、标记、整数的数量,并在单独的文件中获取整数的总和。

import java.util.StringTokenizer;
import java.BufferedReader;
import java.util.Scanner;
    
public class mcmahon_p1
{
    public static void main (String[] args)
    {
   
        if(args.length == 0)
        {
            System.out.println("Please enter a command line argument.");
        }
    
        try
        {
            java.io.BufferedReader input = new 
                java.io.BufferedReader(newjava.io.InputStreamReader(new java.io.FileInputStream(args[0])));
            String inn;
            while( (inn = input.readLine()) != null)
            {
                int lineCount++;
                inn = inn.toLowerCase(); 
                java.util.StringTokenizer st = new java.util.StringTokenizer(inn);
    
                while(st.hasMoreTokens())
                {
                    int tokenCount++;
                    String token = st.nextToken();              
         
                    try  
                    {
                        int v = integer.parseInt(token);
                        int intCount++;
                        double intSum +=v;
                    }
                    catch(Exception e)
                    {
    
                    }
                }
            }    
            System.out.println(lineCount);
            System.out.println(tokenCount);
            System.out.println(intCount);
            System.out.println(intSum);
    
        }
        catch(Exception e)
        {
            System.out.println(e.toString());
            System.exit(0);
        }
    }
}

我收到此错误:

mcmahon_lab1.java:21: error: ';' expected
                int lineCount++;
                             ^
mcmahon_lab1.java:27: error: ';' expected
                    int tokenCount++;
                                  ^
mcmahon_lab1.java:33: error: ';' expected
                        int intCount++;
                                    ^
mcmahon_lab1.java:34: error: ';' expected
                        double intSum +=v;
                                     ^
mcmahon_lab1.java:34: error: not a statement
                        double intSum +=v;

标签: java

解决方案


如果我正确理解了您的答案,您的文件应如下所示:

10
34
59
62
93

你的程序的输出应该是这样的:

Line count: 5
Integer count: 5
Sum of integers: 258

所以在这种情况下你可以使用StringTokenizer,但我不明白这个东西:在这种文件格式中,行数等于整数数,但我们可以计算行数:

int lines = 0;
int sum = 0;
StringTokenizer tokenizer = new StringTokenizer(stringToCheck, "\n");
while(tokenizer.hasMoreTokens()) {
  lines++;
  sum += Integer.parseInt(tokenizer.nextToken());
}

System.out.println("Line count: " + lines);
System.out.println("Sum of integers: " + sum);

如果我理解错了你的答案,请在评论中回答:)


推荐阅读