Java 变量在类中的不同方法中不可用 - 新手

标签 java variables methods declaration

我是 Java 新手,我到处寻找,但我没有得到一个简单的概念。

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

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);

    }
}
}

最佳答案

当您在方法 getNum1() 中执行 int num1 = readInt("?:"); 时,它是存储在 stack 中的局部变量。它不引用您想要引用的全局变量(声明为实例变量)

所以这样做:

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);
    }
}

关于Java 变量在类中的不同方法中不可用 - 新手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17875683/

相关文章:

javascript - 如何像在 Javascript 中一样调用 Python 函数

java - getSharedPreferences 上的 Android SharedPreferences NullPointerException

arrays - 如何在Makefile中将变量列表用作目标?

java - 数组仅打印最后存储的值,数组元素删除仅替换元素

javascript - 检测 javascript 中正在运行的方法(事件)

python - 检索调用方法并即时构建调用?

Java for 循环[方法]

java - 无法弄清楚我的 rot-13 方法有什么问题

java - Spring Data JPA : Instantiate multiple repositories from same repository interface definitions, 每个指向不同的数据库

java - Android - 如何为 ListView 中的每个项目创建一个 Activity 并将 Java 对象传递到下一个屏幕