繁体   English   中英

为什么我的Java程序在文件中仅添加数字的一半列表?

[英]Why does my Java program add only half a list of numbers in a file?

我试图读入数组的文件中的一行中有36个数字的空格分隔列表。 我的程序读取整行,但仅添加18个数字。 有人知道原因吗?

谢谢。

    StringTokenizer st;

    try{
       BufferedReader br = new BufferedReader(
                 new FileReader("Scores.txt"));


       String line = br.readLine();
       double avg = 0.0;
       double sum = 0.0;
       int count = 0;


       while (line!=null)
        {
               st = new StringTokenizer(line);
                    System.out.println("Total tokens : " + st.countTokens());
               for(int i = 0; i < st.countTokens(); i++)
                {
                       avg += Double.parseDouble(st.nextToken());
                       count++;
                       System.out.println("i: " + i); 
                }
            System.out.println(line);

            line = br.readLine();
       }

       br.close();
       sum = avg; 
       System.out.println("Sum: " + sum); 
       System.out.println("Count: " + count);
       avg = avg/count;
       System.out.println("Avg: " + avg);



    }catch(Exception e)

st.countTokens()给出剩余的数字令牌。 当您有18个令牌时,还剩下18个令牌,因此您可以停下来。 我建议您阅读说明以下模式的文档,而不是这样做

 StringTokenizer st = new StringTokenizer("this is a test");
 while (st.hasMoreTokens()) {
     System.out.println(st.nextToken());
 }

我建议使用String.split()

    String[] lineNum;
    int n;
    while (line!=null)
    {
           lineNum = line.split(" ");
           n = lineNum.length;
           System.out.println("Total numbers : " + n);
           for(int i = 0; i < n; i++)
            {
                   avg += Double.parseDouble(lineNum[i]);
                   System.out.println("i: " + i); 
            }
            count += n;
            System.out.println(line);
            line = br.readLine();
   }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM