2017-10-12 6 views
-1

私のJavaプログラムでテキストファイルを読むのに問題があります。私は手動でコマンドラインに値を入力するとBufferedreaderとInputStreamReader

public static void main(String[] args) throws java.io.IOException { 

     InputStreamReader isr = new InputStreamReader(System.in); 
     BufferedReader br = new BufferedReader(isr); 

     try { 
      long base = Long.parseLong(args[0]); 

      String input = br.readLine(); //read first line till the end of file 

      long list = Long.parseLong(input); 

      convertBase(base, list); 
     } 
     finally { 
      br.close(); 
     } 
} 

は、プログラムが動作しますが、私が使用しようとすると、テキストが、それは例外がスローされますファイル:

Exception in thread "main" java.lang.NumberFormatException: For input string: "baseconverion.txt" 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
at java.lang.Long.parseLong(Long.java:589) 
at java.lang.Long.parseLong(Long.java:631) 
at FromDecimal.main(FromDecimal.java:46) 

私が間違っているのかわから/欠落していないが。

+0

処理する前に 'input'を印刷する必要があります。その内容については驚くかもしれません。 – alfasin

+1

ファイル名を 'long'として解析しようとしています。解決策:しないでください。 NB 'readLine()'は 'ファイルの終りまで最初の行を読み込みません'。テキストファイルを最初に 'long 'として解析しようとしているのはなぜですか? – EJP

+0

私はlongsを解析する必要があります。なぜなら、十進数を基底に変換する別の方法があるからです。 –

答えて

0

私は「私は、ファイル名の代わりに番号を入力したときに」あなたは意味テキストファイル

を使用するようにしてください。あなたはテキストファイルを使用しようとしていません。あなたがしているのは、コンソールにファイル名を入力するだけです。テキストファイルを開いたり読むことは何もありません。 Javaは魔法ではありません。それは、それが魔法のようにファイル名であることを認識せず、あなたのために魔法のように開きます。

JavaチュートリアルとJavadocでファイルI/Oについて読む必要があります。

小数点を別の基数に変換する場合は、Long.parseLong()も使用しないでください。元の行を変換メソッドに渡す必要があります。

関連する問題