2014-02-25 40 views
0

我必須從文件中讀取字符串,其中第一個String是N然後將其轉換爲Integer一個週期for從0到N,每次讀取另一個Java閱讀字符串作爲輸入從文件通過命令行

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(); 

    } 

} 
從文件,然後讀作 float每一行轉換爲下面的字符串

當我使用命令行是這樣的:

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(),而不是我創建的掃描儀,因爲我需要一個更快的輸入閱讀器,即使我嘗試使用掃描儀我得到相同的錯誤...有什麼辦法解決這個問題嗎?

謝謝...

+0

如何在eclipse中運行它? –

+0

只需運行程序並將數字逐個輸入即可...... – exceltior

+0

您能否確認您所指的'test.txt'文件實際上位於您啓動'java'程序的目錄中?你確定它不是其他文件的同名嗎? –

回答

1

你的文件「的test.txt」保存爲RTF文件 - 我猜你的Word或類似的文字處理器保存呢?如果你在文本編輯器(例如記事本)中打開文件,你會發現它不包含你所期望的。

+0

這不是問題...因爲這甚至是在編程比賽評估者中給出的同樣的錯誤...嘗試了兩個擴展,並且它給出了相同的錯誤。 – exceltior

+0

@exceltior這與擴展無關。它與文件內容有關。使用文本編輯器(如記事本或gedit)打開文件。 –

+0

@Sotirios像我說那不是問題...我編輯與gedit並給出了同樣的問題...發現了一種新的方式來閱讀輸入和工作就好...謝謝 – exceltior

相關問題