Java通过命令行从文件读取字符串作为 float 输入

标签 java input runtime-error

我必须从第一个String为N的文件中读取字符串,然后将其转换为Integer以进行循环for从 0 到 N,每次从文件中读取另一个字符串,然后将读取的每一行转换为 float,如下所示:

文件名称:test.txt 包含以下内容: 4 1.21 1.31 1.21 1.32

Java 代码

public class lpa2 {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated constructor stub
        String line;int n;
        while((line = nextLine())!=null){
            n = Integer.parseInt(line);
            float v[] = new float[n];
            for(int i = 0;i<n;i++){
                String temp = readln();
                v[i] = Float.parseFloat(temp);
            }
            for(float f:v)
               System.out.println(f);
        }



       }
  public static String readln() throws IOException{
        BufferedReader bi = new BufferedReader(new InputStreamReader(System.in));
        return bi.readLine();

    }

 }

当我像这样使用命令行时:

javac -nowarn lpa2.java

然后

java lpa2 < test.txt

使用文件作为输入,出现以下错误

java.lang.NumberFormatException: For input string: "{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf370"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.parseInt(Integer.java:527)
    at lpa2.main(lpa2.java:15)

如果我尝试使用 eclipse 来完成它,它会完美地工作......

我该如何解决这个问题?我使用我创建的 readln() 代替 Scanner,因为我需要一个更快的输入读取器,即使我尝试使用 Scanner,我也会遇到相同的错误...有什么方法可以解决这个问题吗?

谢谢...

最佳答案

您的文件“test.txt”保存为 rtf 文件 - 我猜您是从 Word 或类似的文字处理程序保存的?如果您在文本编辑器(例如记事本)中打开该文件,您会发现它不包含您期望的内容。

关于Java通过命令行从文件读取字符串作为 float 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22028360/

相关文章:

java - 404 错误 : "The requested resource/Controller is not available"

java - 我如何以及在哪里可以运行gradlew clean war windows

html - 为什么在同一个输入标签中有不同的样式

php - 如何找到修改了哪个输入字段?

java - 无法得到一段时间,或者做... while 循环工作,查找了多个答案。没有任何效果

java - 在ANDROID中将内部文件内容写入LISTVIEW

java - 一个java可执行文件可以同时运行多个循环吗

html - 如何删除 HTML 表格行中表格数据之间的空格?

runtime-error - Axe 2012 tts 错误

VBA 错误代码需要对象 --- 经过三次检查但仍然不起作用