关于Java变量在类中的不同方法中不可用:Java变量在类中的不同方法中不可用 – 新手

Java variables not available in different methods within class - newbie

我是爪哇人,我到处找,但我没有得到一个简单的概念。

我将两个变量声明为int。我希望这两个变量对所有方法都是全局的。在第一个方法中,我想从用户输入中获取第一个变量的值。然后我希望第二个方法可以使用、识别和调用这个新值。但是,每次第一个方法结束时,变量的值都设置回0,第二个方法找不到用户在第一个方法输入中给它的值。我做错什么了?我需要以不同的方式声明变量吗?我需要以不同的方式声明我的方法吗?谢谢你的帮助!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import acm.program.*;

public class FindRange extends ConsoleProgram {

int num1;
int num2;

public void run() {

    println("This program finds the largest and smallest numbers.");

    getNum1();
    getNum2();
    // getNumUntilZero();
}

public void getNum1() {

    int num1 = readInt("?:");
    if (num1 == 0) { //do not accept 0 for first number
        println("Please try again without 0.");
        getNum1();
    }

}

public void getNum2() {
    int num2 = readInt("?:");
    if (num2 == 0) { //if 2nd number is 0, print 1st num as high and low nums
        println("Biggest number:" + num1);
        println("Smallest number:" + num1);

    }
}
}


你的本地变量重新定义为同样的事情。这应该给个警告沿IDE的"本地变量隐藏线的一场"。在这样的范围的方法有一个numX

你需要参考的实例变量声明一个新的变量:不

1
2
3
4
public void getNumX() {
    numX = readInt("?:");
    //...
}

你看我这样删除的int声明这是我到现在assigns numX值比一个本地变量。


实际上你已经创建了新的内部变量的方法。所以需要分配到类的值是变量,但变量:浸出法这样的变化

1
   int num2 = readInt("?:");

to

1
  num2 = readInt("?:");

1
   int num1 = readInt("?:");

to

1
  num1 = readInt("?:");


当你在做int num1 = readInt("?:");getnum1(法),其本地变量存储在栈。它并不是问题,全局变量(实例变量的感知是指你想)

这样做的样本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void getNum1() {
    num1 = readInt("?:");
    if (num1 == 0) { // do not accept 0 for first number
        println("Please try again without 0.");
        getNum1();
    }
}

public void getNum2() {
     num2 = readInt("?:");
    if (num2 == 0) { // if 2nd number is 0, print 1st num as high and low nums
        println("Biggest number:" + num1);
        println("Smallest number:" + num1);
    }
}