Scanner 看不到整数,BufferedWriter 不能写任何东西

Scanner can't see integers, BufferedWriter can't write anything

晚上好! 我需要读取一些整数并用它们做数学运算,但我的问题不在于算法。 Scanner 不会从 .txt 中读取 int,BufferedWriter 也不会写入这些 int。当我尝试在控制台中写入时,结果为 0。它会是什么?

public static void main(String[] args) throws Exception {

    Scanner fin = new Scanner(new File("aaa.in.txt"));
    BufferedWriter fout = new BufferedWriter(new FileWriter("bbb.out.txt"));
    int sum = 0;
    int k = fin.nextInt(); int n = fin.nextInt();

    for (int i = 0; i < k; i++) {
        sum += fin.nextInt() / n * fin.nextInt();
    }

    fout.write(sum);

    fin.close();
    fout.close();
}

这是我的意见

5 30
2 32
7 87
4 100
1 27
16 85

非常感谢大家,扫描仪或 BufferedWriter 没有任何问题。我只需要加倍,如前所述,我不明白它是如何工作的。毕竟这是我的代码。也许它会对以后的人有所帮助。

public static void main(String[] args) throws Exception {

    Scanner fin = new Scanner(new File("aaa.in.txt"));
    BufferedWriter fout = new BufferedWriter(new FileWriter("bbb.out.txt"));
    double sum = 0;
    int k = fin.nextInt();
    int n = fin.nextInt();

    for (int i = 0; i < k; i++) {

        sum += fin.nextDouble() / n * fin.nextDouble() / 100;
    }

    fout.write(Double.toString(sum));

    fin.close();
    fout.close();
}

问题是您误解了要写给 fout 的内容。

BufferedWriter.write(int) 写入单个字符。

您输入的字符是0,因为sum == 0。现在,这不是数字零 '0'(即 48),而是字符 '[=16=]',空字符,即值为零的 char。这是一个非打印字符,因此如果您在文本编辑器中打开该文件,或者只是在命令行中 cat 它,您将看不到它。

所以您正在将它写入文件,这不是您所期望的。如果要写数字 '0',请使用 BufferedWriter.write(String):

fout.write(Integer.toString(sum));

我认为您从文本文件中获取的值被视为字符串。 您是否尝试过 Integer.parseInt() 方法? 我做了一些更改以尝试访问文件并将提供的所有数字的总和输入 input.txt (您的输入)并且它运行没有问题。 另外,在输入文件中,我一行只有一个整数。

public static void main(String[] args) throws FileNotFoundException, IOException 
{
    Scanner fin = new Scanner(new File("input.txt"));
    BufferedWriter fout = new BufferedWriter(new FileWriter("output.txt"));
    int sum = 0;
    while (fin.hasNext())
    {
        sum += Integer.parseInt(fin.next());
    }
   System.out.println(sum);
    fout.write(sum);
    fin.close();
    fout.close();
}