2017-04-26 36 views
-3
import java.io.FileReader; 
import java.util.Scanner; 

public class file_reading 
{ 
    Scanner scanner; 

    try 
    { 
     FileReader reader = new FileReader("toread.txt"); 
     scanner = new Scanner(reader); 
    } catch (Exception e) { 
     System.err.print("hello incorrect"); 
    } 

    String line = scanner.nextLine(); 

    public static void main(String[] args) 
    { 
     System.out.println(line); 
    } 
} 

回答

1

你在这里有一些错误,首先是你写的方法以外的尝试是非法的,你必须有方法,并在他的块({}之间)你会写代码。
无法打印行的原因可能是因为您正在从静态方法调用非静态变量(主)

2

您必须将所有代码放在方法中。除了Scanner的声明。

你可以像这样在你的main方法中声明它。然后它只在这个方法中可见。

Scanner scanner; 

或者您在主方法之外将其定义为静态成员。

static Scanner scanner; 

它在整个班级都可用。

而且你必须把

String line = scanner.nextLine(); 
System.out.println(line); 

你的try/catch块内。否则,编译器假定“扫描器”可能没有被初始化,因为您只在该块内初始化它,但想在外部使用它。你会得到一个警告:“line”是未知的,因为你也在try/catch中实例化了这个,这使得大括号外的所有代码都无法访问。

import java.io.FileReader; 
import java.util.Scanner; 

public class file_reading 
{ 

    public static void main(String[] args) 
    { 
     Scanner scanner; 

     try 
     { 
     FileReader reader = new FileReader("toread.txt"); 
     scanner = new Scanner(reader); 

     String line = scanner.nextLine(); 
     System.out.println(line); 

     } catch (Exception e) { 
     System.err.print("hello incorrect"); 
     } 
    } 
} 
+0

“如果你想全局定义它。”但你也必须使它成为'静态'。 –

+0

这是真的!我的坏,对不起。 ;)重新编辑我的答案。 – DiabolicWords

相关问题