2017-10-12 6 views
0

Javaのテキストファイルを読む方法: 6 - 要素の総数で、これは最初の行に配置されます 5 1 6 3 2 - これは配列番号です。これは2行目に配置されています。Javaのテキストファイルを配列に読み取る方法

私は、デリミタを使用していましたが、最初の行で例外が発生するたびに、スレッド "main" java.utilの例外が発生しました。 InputMismatchException

したがって、6は要素の総数であり、次の要素は要素の配列です。私はこれに欠けている数(私たちの場合は4)を見つけるアルゴリズムを実装したいと思います。

List<Integer> temps = new ArrayList<>(); 

     try (Scanner scanner = new Scanner(new BufferedReader(new FileReader("fisier.txt")))) { 
      scanner.useDelimiter(" "); 
      while (scanner.hasNextLine()) { 
       int number = scanner.nextInt(); 
       scanner.nextLine(); 
       int data = scanner.nextInt(); 
       scanner.skip(scanner.delimiter()); 
       temps.add(number); 
       temps.add(data); 
      } 

      Integer[] tempsArray = temps.toArray(new Integer[0]); 
      for (Integer s : tempsArray) { 
       System.out.println(s); 
      } 



     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
+0

コードがあるからでしょうか? –

+0

InputMismatchExceptionを取得するコードを追加してください –

+1

私はちょうどコードを追加しました! –

答えて

0
BufferedReader br; 
FileInputStream fin; 

try { 
    fin = new FileInputStream(fileName); 
    br = new BufferedReader(new InputStreamReader(fin)); 

    // Read and Split a line. 
    String line = br.readLine().trim(); 
    String[] attributes = line.split(" "); 

    // cast to int and get values 
    List<Integer> numbers = new ArrayList<>(); 
    for(String attribute : attributes) { 
     numbers.add(Integer.parseInt(attribute); 
    } 

    // Sort it ascending 
    Collections.sort(numbers); 

    // algorithm to find missing one 
    // first+last one can´t be wrong so it´s working 
    int checkValue = numbers.get(0); 
    int missing; 
    for(Int number : numbers) { 
     if(checkvalue != number) { 
      missing = checkValue; 
      break; 
     } 
     checkValue++; 
    } 

    System.out.println("Missing Number: " + missing): 

    fin.close(); 
    br.close(); 
} catch (FileNotFoundException e) { 
    System.err.println("Your Message"); 
} catch (IOException e) { 
    System.err.println("Your Message"); 
} 
+0

必要に応じて、各行にループを追加します。 – LenglBoy

0

これは、配列リストに行毎にファイルを読み込みます。しかし、私の質問ファイルを読み取る方法についてSIはなく、どのようなアルゴリズムを実装する。..

は、これはコードですforループを実行すると、数値が解析されます。あなたはnextInt()は、テキストファイルを好きいけない何らかの理由FileUtils.downloadToFile

List<String> data = new ArrayList<>; 
BufferedReader br = new BufferedReader (new FileReader(new File("data.txt"))); 
String line = null; 
while ((line = br.readLine()) != null) 
    data.add(line); 
br.close(); 
0

を行うにはApache CommonsのIOを使用することができ、私はそれがint型の値を返すようにInteger.valueOf(scanner.next())を制御するための方法scanner.hasNext()を使用して解決してきました。

while (scanner.hasNextLine()) { 
    if(scanner.hasNext()); 
     int number = Integer.valueOf(scanner.next()); 
    scanner.nextLine(); 
    if(scanner.hasNext());     
     int data = Integer.valueOf(scanner.next()); 
    scanner.skip(scanner.delimiter()); 
    temps.add(number); 
    temps.add(data); 
} 

は、あなたのファイルに値をint型しかキャスタブル含まれていることを確認し、あなたのような制御を行うことができます。

String dataS = scanner.next(); 
if(StringUtils.isNumeric(String dataS)) 
    int data = Integer.valueOf(dataS); 

StringUtils.isNumeric()のApache Commonsの

関連する問題