我似乎无法让Java读取我的文本文档

时间:2016-01-21 03:24:25

标签: java text

self

我有一个AP Comp类的项目,我根据笔记完成了工作,但文件“数字”没有被读取,我得到的答案是0,当它应该是一个巨大的数字。

3 个答案:

答案 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)处理DivideByZeroFileNotFound例外

请参阅以下代码:

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方法所需的空格分隔的整数。