1
import java.io.*;
import java.util.*;

class Read
{
    public static void main(String args[])
    {
        try {
        Scanner scan = new Scanner(new java.io.File("textfile.txt"));
        } catch (FileNotFoundException e){
        }        
        while(scan.hasNext()){
        String line = scan.nextLine();
        String[] elements = line.split(",");
        }
    }
}

なぜ私は得るのですか

error: cannot find symbol
        while(scan.hasNext()){
              ^
  symbol:   variable scan

4

5 に答える 5

4

問題はスコープにあります。ブロックの外側でオブジェクトを宣言し、ブロック内側でインスタンス化できます。Scannertry...catch

Scannerまた、インスタンス化されていることに依存するすべてのI / O操作を内部に配置したい場合もあります。そうしないとtry...catch、後で問題が発生します。

例:

public static void main(String[] args) {
    Scanner scan = null;
    try {
        scan = new Scanner(new File("textfile.txt"));
        // other I/O operations here including anything that uses scan
    } catch (FileNotFoundException e) {
        System.out.println("helpful error message", e);
    }
 }
于 2012-12-03T03:50:59.373 に答える
0

あなたはブロックscanの外で宣言されるべきです、あるいはあなたはループをブロックtry-catchに入れることができますwhiletry-catch

于 2012-12-03T03:52:06.147 に答える
0

whereループの場所を変更しました。

import java.io.*;
import java.util.*;

class Read
{
    public static void main(String args[])
    {
        try {
        Scanner scan = new Scanner(new java.io.File("textfile.txt"));
         while(scan.hasNext()){
          String line = scan.nextLine();
          String[] elements = line.split(",");
         }
        } catch (FileNotFoundException e){
           e.printStackTrace();
        }        
    }
}
于 2012-12-03T03:54:34.590 に答える
-1

このコードを試してください

import java.io.*;
import java.util.*;

class Read
{
public static void main(String args[])
{
    Scanner scan=null;
    try 
    {
       scan = new Scanner(new java.io.File("textfile.txt"));
       while(scan!=null)
       {
        String line = scan.nextLine();
        String[] elements = line.split(",");
       }
    } catch (FileNotFoundException e){ }        
}
}
于 2012-12-03T03:53:30.520 に答える
-1
class Read
{
    private static final String TEXT_FILE = "textfile.txt";

    public static void main(String args[])
    {
        // BAD
        try {
          Scanner scan = new Scanner(new java.io.File("textfile.txt"));
        } 
        catch (FileNotFoundException e) {
          ; // Eating exceptions - a bad habit :(
        }        
        while(scan.hasNext()){
          String line = scan.nextLine();
          String[] elements = line.split(",");
        }
    }
}

対照的に ...

class Read
{
    public static void main(String args[])
    {
        // Good
        try {
          Scanner scan = new Scanner(new java.io.File(TEXT_FILE));
          while(scan.hasNext()){
            String line = scan.nextLine();
            String[] elements = line.split(",");
          }
        } 
          catch (FileNotFoundException e){
            System.out.println ("Error parsing " + TEXT_FILE + ": " + e.getMessage());
        }        
    }
}
于 2012-12-03T03:54:58.263 に答える