2012-04-27 45 views
1

,如果我有这在我的主要方法:PrintWriter output = new PrintWriter(new FileWriter(args[1]));爪哇 - 无法找到符号

,这在另一种方法:output.println(currentLine);

import java.io.*;明显,

没有人知道为什么我收到

cannot find symbol 
symbol : variable output 
location: class TestClass 
     output.println(currentLine); 
+4

向我们展示代码,因为它在文件中,而不是作为叙述。 – 2012-04-27 11:02:42

+0

它抱怨符号'符号'。你在哪里使用?恕我直言,我会使用IDE来帮助您查找并自动修复此问题。 – 2012-04-27 11:03:16

+3

变量输出超出范围。将它定义为一个实例变量,而不是主要的 – 2012-04-27 11:03:33

回答

2

编译器告诉你名称(符号)output没有在作用域(和封闭物)中定义在你想使用它的地方)。根据定义

PrintWriter output = new PrintWriter(new FileWriter(args[1])); 

看来你在main()功能定义output,但想在一个类TestClass,为output只内main()

假设main()定义是无效的定义为使用它在TestClass之内,您可以在该类中定义output,然后在main()中指定其值,并在以后的类中使用它:

public class TestClass { 
    PrintWriter output; 
    public void write(String currentLine) { 
    output.println(currentLine); 
    } 

    public static void main(String[] args) { 
    TestClass tc = new TestClass(); 
    tc.output = new PrintWriter(new FileWriter(args[1])); 
    tc.write("Sometext"); 
    } 
} 
+0

不,我想在反向方法中使用它,它是TestClass的一部分 – AkshaiShah 2012-04-27 11:25:49

+0

我的代码是一个例子:在'TestClass'中用'reverse()'代替'write()',你很好:主要思想是:1)在你想使用它的类中定义'output'; 2)你在'main()'(或任何其他函数)中赋值它的值,在那里你知道创建对象的参数; 3)在output的值被设置后调用'reverse()':你可以使用'output',因为它是a)在范围内,并且b)具有合适的值 – Attila 2012-04-27 11:40:56

+0

@Attila - 你不能初始化静态方法中的非静态类成员。 – Perception 2012-04-27 11:47:53