Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,似乎没有任何理由更改变量_Java - Fatal编程技术网

在Java中,似乎没有任何理由更改变量

在Java中,似乎没有任何理由更改变量,java,Java,所以我昨天才开始学习Java,如果这有点混乱,我深表歉意 基本上,我是通过打印来自函数questionTime()的输入来测试函数menuValid(),我的问题是,不管我对菜单的输入是什么,menuValid()将始终打印“0”作为我的答案。但是,在相同的点声明和打印X变量,但是X将保持不变,并且不会设置为“0” 这是我的密码: import java.util.Scanner; public class Test { public static int menu_input

所以我昨天才开始学习Java,如果这有点混乱,我深表歉意

基本上,我是通过打印来自函数questionTime()的输入来测试函数menuValid(),我的问题是,不管我对菜单的输入是什么,menuValid()将始终打印“0”作为我的答案。但是,在相同的点声明和打印X变量,但是X将保持不变,并且不会设置为“0”

这是我的密码:

import java.util.Scanner;
public class Test {
    
    public static int menu_input;
    public static int x;

    static void menuError() {
        System.out.println("Please pick a valid option.");
        questionTime();
    }

    public static void questionTime() {
        Scanner scan = new Scanner(System.in);
        try {
            int menu_input = scan.nextInt();
            x = 25;
            if(menu_input>4 && menu_input < 9){
                menuError();
            }
            if(menu_input>9 || menu_input<1){
                menuError();
            }
            else{
                System.out.println(menu_input);
                menuValid();
            }

            scan.close();

        } catch(Exception e) {
            menuError();
        }
    }

    public static void menuValid() {
        System.out.println(menu_input);
        System.out.println(x);
    }

    public static void main(String[] args) {

        System.out.println("P4CS Mini Applications");
        System.out.println("----------------------");
        System.out.println("Please Select an option:");
        System.out.println("1) Keep Counting Game");
        System.out.println("2) Number Conversion Tool");
        System.out.println("3) Universal Product Code (UPC) Calculator");
        System.out.println("4) Universal Product Code (UPC) Checker");
        System.out.println("9) Quit");
        System.out.println("Please enter option");

        questionTime();

        }

    }

您在
questionTime
内重新声明了
menu\u input
(当您声明
int menu\u input=scan.nextInt();
),这与您处理
x
的方式不同,您刚刚更改了它的值(
x=25;
)。因此,您通过
扫描仪设置的
菜单项
不是您在
menuValid
中打印的
菜单输入
类变量,您必须将
菜单输入
传递到
menuValid()
-

else{
                System.out.println(menu_input);
                menuValid(menu_input); // see this line
            }
并更改菜单的有效功能,如下所示-

public static void menuValid(int menu_input) {
        System.out.println(menu_input);
        System.out.println(x);
    }


当你命名你的方法时,考虑的是行动,而不是路标。例如,
questionTime()
应该命名为类似于
getUserInput()
。Java命名约定使用cammelCase,变量和方法名称不带下划线<代码>菜单输入应为
menuInput
public static void menuValid(int menu_input) {
        System.out.println(menu_input);
        System.out.println(x);
    }