java - 无法从java中的输入文件读取int

标签 java file java.util.scanner

我有一个程序可以读取包含 4000 个 10 的输入文件,每行一个。

程序编译正常,但运行时出现以下错误:

ˇ˛0Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextInt(Scanner.java:2091)
at java.util.Scanner.nextInt(Scanner.java:2050)
at Project1.main(Project1.java:27)

出于某种原因,当我查看文本文件时,第一行是 0 而没有其他内容,当程序读取第一行时,它会得到 ˇ˛0 。我也尝试使用缓冲阅读器,但没有成功。有人可以提供一些意见吗?谢谢!

这是我的代码:

import java.io.*;
import java.util.Random;
import java.util.Scanner;

public class Project1 {

    public static void main(String[] args) {
        int [] stream = new int[4000];
        int [] received = new int[4000];
        int corrupt = 0;
        float standardDev = 0;
        float [] averages = new float[4000];
        float averagev = 0;
        float voltage = 0;
        try {
            Scanner st = new Scanner(new File("CS 380 bit feed.txt"));
            System.out.print(st.next());
            FileWriter outFile = new FileWriter("output");
            PrintWriter out = new PrintWriter(outFile);
            int i=0;
            Random rand = new Random();

            stream[i]=st.nextInt();
            if (stream[i] == 0)
                voltage = (float) (2.49 * rand.nextFloat());
            else
                voltage = (float) ((2.5 * rand.nextFloat()) + 2.5);
            if (voltage < 2.5)
                received[i] = 0;
            else
                received[i] = 1;
            averagev = voltage;
            averages[i] = voltage;
            if (stream[i] != received[i])
                corrupt++;
            i++;

            while (i < 4000) {
                stream[i]=st.nextInt();
                if (stream[i] == 0)
                    voltage = (float) 2.49 * rand.nextFloat();
                else
                    voltage = (float) ((2.5 * rand.nextFloat()) + 2.5);
                averagev = ((averagev * i) + voltage)/(i+1);
                if (voltage <= averagev)
                    received[i] = 0;
                else
                    received[i] = 1;
                if (stream[i] != received[i])
                    corrupt++;
                i++;
            }
            averagev = 0;
            int j = 0;
            while (j < 4000) {
                for (int k = 0; k<8; k++) {
                    out.print(received[j]);
                    averagev = averages[i] + averagev;
                    j++;
                }
                out.println("    " + averages[j]);
            }

        }
        catch (FileNotFoundException e) {
              e.printStackTrace();
        } 
        catch (IOException e) {
              e.printStackTrace();
        }
        averagev = averagev / 4000;
        for (int k = 0; k<4000; k++) 
            standardDev = ((averagev - averages[k])*(averagev - averages[k])) + standardDev;
        standardDev = standardDev/4000;

        System.out.println("Errors: " + corrupt);
        System.out.println("Percentage Corrupt: " + corrupt / 4000);
        System.out.println("Average of Average Voltages: " + averagev);
        System.out.println("Standard Deviation: " + standardDev);        
    }
}

最佳答案

在十六进制编辑器中查看该文件。它可能已损坏或开头有字节顺序标记,这不一定会显示在文本编辑器中。

关于java - 无法从java中的输入文件读取int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12796721/

相关文章:

java - 如何使用 Java SDK 列出 Azure 上的“我的图像”?

mysql - [mysql]在<150kb的数据库中存储小文件最好的数据类型是什么

java - 了解 findWithinHorizo​​n 输出

java - 将扫描仪从静态传递到非静态并返回 float java

c - 测试文件中字符串中的空格

java - 读取由逗号和空格分隔的一行 - java

java - 如果仅对 BinaryOperator 参数中的一个进行总结,Java 流实际上会减少什么?

java - 当我发送消息时,我可以在 firebase 中看到它,但我无法在模拟器或手机上读取它,它什么也没有显示

Java 正则表达式 : Optional Matching

java - 为什么我可以从 getClass().getResource() 获取有效的 url,但返回的 url 创建了一个不存在的文件