2016-05-02 9 views
1

私は数百のダブルを持つテキストファイルをすべてカンマで区切り、それぞれのダブルを配列リストに入れる方法を書いています。ここに私のコードです:テキストファイルからダブルリストを配列リストに追加

public void ReadFile(String inputfile) throws FileNotFoundException { 
    File myFile = new File(inputfile); 
    Scanner sc = new Scanner(myFile); 
    try { 
     while (sc.hasNextDouble()) { 
      int i = 0; 
      arraylist.add(sc.useDelimiter(",")); 
      i++; 
     } 

    } catch (Exception e) { 
     System.out.println("Error"); 
    } 
    sc.close(); 
} 

私が午前トラブルがラインarraylist.add(sc.useDelimiter(","))' である私は、「型のArrayList内(ダブル)メソッドの追加引数(スキャナ)には適用されません」というエラーが表示されます。私はこれを解決するために何をすべきか分からない。どんな助け?

+0

:それは次のようになります。 'sc.useDelimiter("、 ")。nextDouble()'やそのようなものを試してみてください。 – Gendarme

+2

スキャナーAPIの使い方ではないので、スキャナーAPIを再読み込みする必要があります。デリミタ**を一度設定してから、 'hasNextXxx()'/'nextXxx()'メソッドのペアを呼び出します。 –

答えて

0

@Hovercraftは、区切り文字を一度設定してスキャナを初期化した場所に移動する必要があると述べています。それはそれは `double`またはパラメータとして、おそらく` Double`を期待していますが、代わりにそれを `Scanner`を与えていることを意味し

public void ReadFile(String inputfile) throws FileNotFoundException { 

File myFile = new File(inputfile); 
Scanner sc = new Scanner(myFile); 
List<double> doublelist = new ArrayList<Double>(); 
//this is where you set the delimiter 
sc.useDelimiter(",") 
    try { 
     while (sc.hasNextDouble()) { 
      doublelist.add(sc.nextDouble()); 
     } 

    } catch (Exception e) { 
     System.out.println("Error"); 
    } 
    sc.close(); 
} 
0

useDelimiterをループ外に移動する必要があります。ファイル内の数字を反復するには、nextDoubleも呼び出す必要があります。

public static List<Double> readFile(String inputfile) throws FileNotFoundException{ 
     List<Double> arraylist = new ArrayList<Double>(); 
     File myFile = new File(inputfile); 
     Scanner sc = new Scanner(myFile); 
     sc.useDelimiter(","); 
     try { 
      while (sc.hasNextDouble()) { 
       Double number = sc.nextDouble(); 
       arraylist.add(number); 
      } 
     }catch (Exception e) { 
      System.out.println("Error"); 
     } 
     sc.close(); 
     return arraylist; 
    } 

また、Javaでの適切な命名規則に従ってください。メソッド名は、小文字で始まる必要があります。

関連する問題