我想从另一个方法访问方法内的变量集。我正在尝试访问方法Scanner
中的sc
inlet
,但无法解析该变量。
public class LineReader extends MaxObject {
public LineReader() {
declareInlets(new int[]{DataTypes.INT,DataTypes.ALL});
declareOutlets(new int[]{DataTypes.INT,DataTypes.ALL});
}
public void input(String Fold.sc, Atom[] args) {
Scanner sc = new Scanner(new File());
if (getInlet() == 1) {
post("hello anything " + Fold.sc + " " + Atom.toOneString(args) + "!");
outlet(1, s, args);
} else {
post("uh");
}
}
public void inlet(int a) {
for (int i = 0; i < startLine; i++) {
info = sc.readLine();
}
for (int i = startLine; i < endLine + 1; i++) {
info = sc.readLine();
System.out.println(info);
post("hello integer " + a + "!");
outlet(0, info);
}
}
}
答案 0 :(得分:4)
您似乎无法理解variable scope。花一些时间了解它可能会让你受益。
由于您的变量sc
是在方法input
中声明的,因此只能在那里访问它。如果你想让它在整个班级都可以访问,你应该让它成为班级的一员。
这是一个如何运作的例子:
public class MyClass {
int x = 3;
public void method1() {
int a = 1;
}
public void method2() {
System.out.println(a); //will not work - a is not in scope
System.out.println(x); //will work - x is accessible from all methods
}
}
答案 1 :(得分:0)
声明扫描仪SC在输入功能的一侧,
public class LineReader extends MaxObject {
Scanner sc;
public LineReader() {
declareInlets(new int[]{DataTypes.INT,DataTypes.ALL});
declareOutlets(new int[]{DataTypes.INT,DataTypes.ALL});
}
public void input(String Fold.sc, Atom[] args) {
sc = new Scanner(new File());
if (getInlet() == 1){
post("hello anything " + Fold.sc + " " + Atom.toOneString(args) + "!");
outlet(1, s, args);
} else
post("uh");
}
public void inlet(int a) {
for (int i = 0; i < startLine; i++) { info = sc.readLine(); }
for (int i = startLine; i < endLine + 1; i++) {
info = sc.readLine();
System.out.println(info);
post("hello integer " + a + "!");
outlet(0, info);
}
}
}
答案 2 :(得分:0)
您的扫描仪实例是输入法的本地实例。您需要将实例传递给入口方法才能在那里使用它。
public void input(String Fold.sc, Atom[] args) {
...
Scanner sc = new Scanner(new File());
...
}
public void inlet(int a, Scanner sc) {
...
for (int i = 0; i < startLine; i++) { info = sc.readLine(); }
...
}