我是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
-------------
任何帮助将不胜感激,谢谢!
答案 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());
}
}
}
确保每行都有一个数字,并删除任何没有数字的新行!因为它会返回一个错误,除非你做一个检查以检查该行是否为空。