2017-06-11 4 views
-5

私はJAVAを初めて使い、.txtファイルからデータを読み込もうとしています。私はScannerオブジェクトを 'Scanner in=new Scanner("file.txt");'に実装していますが、whileループではコードの内容を調べています。ファイル内に複数の行のデータがあり、各行に3つの文字列(セキュリティ番号、First名前、姓:01 Thomas Anderson)WhileのhasNext()は何ですか?

したがって、hasNext()メソッドは何をしますか?それはファイルの行の終わりか最後の行を探しますか?

を(あまりにnext()メソッドを言及する)上記のスニペットの作業について詳しく説明してください:)

+2

を使用すると、APIのJavadocの中に 'Scanner.hasNext()'メソッドのドキュメントを読んでいる:あなたが行ごとに3つのトークンがあるだろう知っているので、その後、あなたは3回、次のメソッドを呼び出しますか?もしあなたがしなければ、方法を見ることへのあなたの最初の反応は、ここで何を意味するのかを尋ねることなので、多くの質問が必要になります....あなたが持っているなら、あなたが理解していないことについてもっと具体的にしてください。 – SJuan76

+0

あなたはjavadocを見ましたか?わからない部分があったか –

答えて

0

私はJavadocを見てお勧めしますが、私は単純にあなたのためにそれを説明しますできるだけ早く

基本的に、hasNext()メソッドは、指定されたドキュメントに別の文字列が含まれている場合、trueを返します。したがって、上記の文書の文字列がある場合、スニペットがループする理由は何ですか?文書全体に文字列がなくなると、hasNext()はfalseを返します。

次に、next()メソッドの例を示します。 String myString = myScanner.next(); これにより、myStringは指定されたドキュメントの次の文字列と等しくなります。

0

Javadocは言う:

のhasNext
パブリックブールのhasNext()

戻り値がtrueこのスキャナが入力内の別のトークンを持っている場合。この メソッドは、入力のスキャンを待機している間にブロックされることがあります。スキャナは入力を先に進まずに しません。


パブリック文字列の次の()

検出し、このスキャナから次の完全なトークンを返します。 完全トークンの前に、 区切りパターンに一致する入力が続きます。このメソッドは、前回のhasNext()の呼び出しがtrueを返した場合でも、 スキャンへの入力を待機している間にブロックされる可能性があります。

すべてのファイル行を読み込むには、すべての行にトークンがあるかどうかを確認する必要があります。

import java.io.File; 
import java.util.Scanner; 

public class FLoader { 

    public void load(String path) { 
     Scanner in = null; 

     try { 
      in = new Scanner(new File(path)); 
      while (in.hasNext()) { 
       String ss = in.next(); 
       String FName = in.next(); 
       String LName = in.next(); 

       System.out.printf("SSN: %s, FirstName: %s, LastName: %s \n", ss, FName, LName); 
      } 

     } catch (Exception e) { 
      System.err.println("Loading file failed"); 
      e.printStackTrace(); 
      System.exit(-1); 
     } 
    } 
} 
関連する問題