2016-12-04 3 views
0

私がintとして最初に読んでいない理由は、非int型の文字でも読んでいるからです。 ファイルには、次のようになります。オブジェクトとしてファイルからIntを読み込んでからInt - Javaに変換する

ジェームズ80

デーブ90

のTy 64

私はArrayListを占めるように、これを使用しています:私が欲しいところが

while (scan.hasNext()){ //while end of file not reached 
     n.add(scan.next()); 
     count++;    
    } 

をinstanceofを使って配列から整数を取り出すには、それはそうだと思われる。

(n.get(i) instanceof Integer) 

は、たとえ正しく占有されていたとしても、配列のすべての値に対してfalseを返します。

{James, 80, Dave, 90, Ty, 64} 

私は他のすべてのオブジェクトが整数なので、ロジックを使用しました。

for (int i = 0; i < n.size() ; i++){ 

     if(n.get(i) instanceof Integer){ 
    .... 
    } 
} 

これは、整数だけをフィルタリングする必要がありますが、私のプログラムはif文を入力していません。

私のロジックに欠陥がありますか、それともArrayListに入れる前にintを収集する方法を見つける必要がありますか?そうすれば、私は何をする必要があるかという手がかりを与えられますか?

+1

'Scanner.next()'は 'String'を返しますので、' Integer'にすることはできません。 – Bubletan

+0

正しいですが、配列に入れる前にStringからIntegerを事前に決定するためにどのようなロジックを使用しますか? – Busdriver667

+4

'Integer.parseInt(String)'を使って入力を解析するか、 'Scanner.hasNextInt()'と 'Scanner.nextInt()'を使うことができます。 – Bubletan

答えて

2

hasNextIntメソッドを使用すると問題が解決したようです。

while (scan.hasNext()){ //while end of file not reached 
     if(scan.hasNextInt()){ 
      n.add(scan.nextInt()); 
     }else{ 
      n.add(scan.next()); 
     } 
関連する問題