Java读取字符串以从文件到命令行的输入方式浮动

时间:2014-02-25 23:17:42

标签: java input runtime-error

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

FILE Name: test.txt,内容如下: 4 1.21 1.31 1.21 1.32

Java Code

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(),我创建而不是扫描仪,因为我需要一个更快的输入阅读器,即使我尝试使用扫描仪我得到相同的错误...有什么办法可以解决这个问题吗?

谢谢...

1 个答案:

答案 0 :(得分:1)

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