Java - 在各种方法中使用静态类变量

0 java variables methods static

我是编程新手,我需要一些帮助来理解如何在多种方法中使用相同的变量。提前致谢!

我有一个类,在方法之前声明了一些静态变量,在我有第一个计算某些值的方法和第二个打印结果的方法之后。在打印方法中,我想打印初始输入,但它始终为 0。有人可以帮助我了解如何更新全局变量吗?

我尝试从该方法返回值,但它没有更新“全局”变量

import java.util.Scanner;

public class Main {
    public static boolean evenNumber = false;
    public static boolean positiveNumber = false;
    public static boolean positiveEvenNumber = false;
    public static int intInputNumber;


    public static void main(String[] args) {
            testEvenPositive();
            printMethod();
        }

        public static int testEvenPositive(){
            System.out.println("Please insert a number, it will be evaluated to even or not and id it's positive or not.");
            Scanner scanner = new Scanner(System.in);
            int intInputNumber = Integer.parseInt(scanner.nextLine());
            if (intInputNumber > 0) {
                positiveNumber = true;}
            if (intInputNumber % 2 == 0) {
                evenNumber = true;}
            if (intInputNumber % 2 == 0 && intInputNumber > 0) {
                positiveEvenNumber = true;}

            return intInputNumber;
        }

        public static void printMethod() {
            System.out.println(Main.intInputNumber + " is an even number: " + evenNumber);
            System.out.println(Main.intInputNumber + " is a positive number: " + positiveNumber);
            System.out.println(Main.intInputNumber + " is a positive even number: " + positiveEvenNumber);
        }
    }
Run Code Online (Sandbox Code Playgroud)

Dav*_*sho 5

问题是您在 testEvenPositive() 方法中声明了一个局部变量 (intInputNumber)。这就是正在改变的。您还忽略了返回的内容。您可以不声明局部变量并使该方法无效

public static void main(String[] args) {
            testEvenPositive();
            printMethod();
        }

        public static void testEvenPositive(){
            System.out.println("Please insert a number, it will be evaluated to even or not and id it's positive or not.");
            Scanner scanner = new Scanner(System.in);
            intInputNumber = Integer.parseInt(scanner.nextLine());
            if (intInputNumber > 0) {
                positiveNumber = true;}
            if (intInputNumber % 2 == 0) {
                evenNumber = true;}
            if (intInputNumber % 2 == 0 && intInputNumber > 0) {
                positiveEvenNumber = true;}
        }
Run Code Online (Sandbox Code Playgroud)

或者您可以返回变量然后在 main 方法中分配它

public static void main(String[] args) {
            intInputNumber = testEvenPositive();
            printMethod();
        }

        public static int testEvenPositive(){
            System.out.println("Please insert a number, it will be evaluated to even or not and id it's positive or not.");
            Scanner scanner = new Scanner(System.in);
            int intInputNumber = Integer.parseInt(scanner.nextLine());
            if (intInputNumber > 0) {
                positiveNumber = true;}
            if (intInputNumber % 2 == 0) {
                evenNumber = true;}
            if (intInputNumber % 2 == 0 && intInputNumber > 0) {
                positiveEvenNumber = true;}

            return intInputNumber;
        }
Run Code Online (Sandbox Code Playgroud)

我还认为在这种情况下你不应该使用全局变量。您可以在主方法中定义变量并传递参数。