循环txt文件,查找范围内的数字及其平均值

时间:2014-11-07 14:30:21

标签: java loops range average

我是java编程新手并使用NetBeans IDE 8.0,我试图编写一个循环遍历数字(numbers.txt)的txt文件的代码,找到10以下的所有数字,和所有超过30的数字,然后计算这些数字的平均值,输出类似于"范围内的数字的平均值是__"

这是我到目前为止的代码,因为我不太确定我哪里出错:

public class RangeAverage {


int average=0,num;
Scanner scan=new Scanner(new File("numbers.txt"));
while(scan.hasNextInt())
{
    if((num=scan.nextInt()<10 || num >30)
    {
        average+=num;
    }
}
System.out.println(" Average of numbers in range is "+average);

}

我得到的错误就行了:

Scanner scan=new Scanner(new File("numbers.txt")); (Lightbulb symbol)
-cannot find symbol
symbol: class Scanner
location: class RangeAverage

-cannot find symbol
symbol: class Scanner
location: class RangeAverage

-cannot find symbol
symbol: class Scanner
location: class RangeAverage
-----------

并在线

System.out.println(" Average of numbers in range is "+average); (a ! error)
-cannot find symbol
symbol: class out
location: class System

<identifier> expected

illegal start of type
-------------

任何帮助将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:3)

你不能把这些代码放在类区。使用方法。你可以声明变量,但是进程应该在方法内部发生。类应该有一个主要的方法来运行。你在计算总和而不是平均值需要按循环时间除以得到平均值。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class RangeAverage{

    public static void main(String[] args) throws FileNotFoundException {
        int average = 0, num = 0, i=0;
        Scanner scan = new Scanner(new File("numbers.txt"));
        while (scan.hasNextInt()) {
            if (((num = scan.nextInt()) < 10 || num > 30)){
                average += num;
                i++;
            }
        }
        System.out.println(" Average of numbers in range is " + (average/i));

    }
}

根据你的评论错误说该目录中没有这样的命名文本文件。所以将文件添加到目录或提供文本文件的完整路径。你需要转义斜杠\ 例 如果您的文件路径是

C:\Users\Madhawa.se\Desktop\numbers.txt 

那么路径应该是,

Scanner scan = new Scanner(new File("C:\\Users\\Madhawa.se\\Desktop\\numbers.txt"));

答案 1 :(得分:1)

将代码调整为如此,并将“numbers.txt”移动到项目文件夹中。使用完整路径不是一个好习惯,因为每次切换到另一台计算机时都必须更改它。 将它放在manifest.mf文件附近。

import java.io.File;
import java.util.Scanner;

public class RangeAverage {

public static void main(String[] args) {
    try {
        int average = 0, num, total = 0;
        Scanner scan = new Scanner(new File("numbers.txt"));
        while(scan.hasNextLine())
        {
            num = scan.nextInt();
            if(num < 10 || num > 30)
            {
                average = average + num;
                total++;
            }
        }
        scan.close();
        System.out.println(" Average of numbers in range is " + (average/total));
    } catch (Exception e) {
        // print out the error
        System.out.println(e.toString());
    }
  }
}

确保每行都有一个数字,并删除任何没有数字的新行!因为它会返回一个错误,除非你做一个检查以检查该行是否为空。