self
我有一个AP Comp类的项目,我根据笔记完成了工作,但文件“数字”没有被读取,我得到的答案是0,当它应该是一个巨大的数字。
答案 0 :(得分:1)
new Scanner("J:\\AP Comptuter Science\\Semester 2\\Exeptions\\13.1\\numbers.txt")
您正在呼叫Scanner(String source)
,但不会读取该文件;它扫描字符串本身。
您需要的可能是public Scanner(File source)
,如下所示:
new Scanner(new File("J:\\AP Comptuter Science\\Semester 2\\Exeptions\\13.1\\numbers.txt"))
您还需要检查路径,“学期”和“2”之间几乎肯定没有5个空格
总的来说,我强烈建议您在调试器中单步执行代码,而不是仅仅运行。如果你这样做了,你会在执行
之后看到它String test = in.nextLine();
字符串test
包含文件的名称而不是其内容。
可以进行其他改进,考虑在能够使其工作后在codereview stackexchange中发布
答案 1 :(得分:0)
首先,您应该更正路径,并可能将其放在与类文件相同的目录中。而不是提供扫描仪的路径,你也应该给它一个文件。看起来应该是这样的。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Average
{
public void printAverage(){
File file = new File(""J:\\AP Comptuter Science\\Semester 2\\Exeptions\\13.1\\numbers.txt"");
Scanner scan;
try {
scan = new Scanner(file);
int total = 0, counter = 0;
while(scan.hasNextInt()){
System.out.println("loop");
total = total + scan.nextInt();
counter++;
}
if(counter != 0)
total = total/counter;
System.out.println(total);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
答案 2 :(得分:0)
如前所述,代码有几个问题:
a)new Scanner(String)
读取字符串而不是文件
b)路径似乎不正确
c)处理DivideByZero
和FileNotFound
例外
请参阅以下代码:
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.io.File;
public class Average{
public void average(){
Scanner in = null;
try{
in = (new Scanner(new File("J:\\AP Comptuter Science\\Semester 2\\Exeptions\\13.1\\numbers.txt")));
String test = in.nextLine();
}
catch(NullPointerException | FileNotFoundException i){
System.out.println("Error: " + i.getMessage());
}
int total = 0;
int counter = 0;
while(in != null && in.hasNextInt())
{
total = total + in.nextInt();
counter++;
}
Float average = null;
if (counter > 0) { //to avoid divide by zero error
average = (float)total / counter;
System.out.println("Average: "+average);
}
}
public static void main(String args[]){
new Average().average();
}
}
这仅适用于numbers.txt,它具有nextInt()
类Scanner
方法所需的空格分隔的整数。