Java方法输出不返回新值?

Java方法输出不返回新值?,java,methods,Java,Methods,我在想我遇到的一些问题 基本上,我的问题是,我的方法返回的值不正确 我使用print-line语句只是为了确保它正常工作,但它总是返回1,即使我调用另一个应该返回字符串的方法也是如此 变量current\u number/image\u number应该在每次调用方法时更新(如果我从1开始一直调用forward,我应该得到2,3,4等等) 这是我的密码 public class Menu { static final int MIN_NUMBER = 1; static fin

我在想我遇到的一些问题

基本上,我的问题是,我的方法返回的值不正确

我使用print-line语句只是为了确保它正常工作,但它总是返回
1
,即使我调用另一个应该返回字符串的方法也是如此

变量
current\u number/image\u number
应该在每次调用方法时更新(如果我从
1
开始一直调用forward,我应该得到
2
3
4
等等)

这是我的密码

public class Menu {

    static final int MIN_NUMBER = 1;
    static final int MAX_NUMBER = 8;
    static int image_number = 1;
    static boolean exit;

    public static int forward(int current_number) {
        if (current_number < MAX_NUMBER) {
            current_number++;
        } else if (current_number >= MAX_NUMBER) {
            current_number = MIN_NUMBER;
        }
        return current_number;
    }

    public static void showMenu() {
        int current_number = image_number; // global int that equals 1

        while (!exit) {
            Scanner input = new Scanner(System.in);
            Random rand = new Random();
            int randomvalue = rand.nextInt(MAX_NUMBER) + MIN_NUMBER; // used in another method

            System.out.println("1. forward"); // menu with options
            System.out.println("2.");
            System.out.println("3.");
            System.out.println("4. Exit");
            System.out.println(current_number);

            int choice = input.nextInt();

            switch (choice) {
                case 1:
                    forward(current_number);
                    break;

                case 4:
                    exit = true;
                    break;
            }
        }
    }
}
公共类菜单{
静态最终整数最小值=1;
静态最终整数最大值=8;
静态int图像_编号=1;
静态布尔退出;
公共静态整数转发(整数当前_编号){
if(当前数量<最大数量){
当前_数++;
}否则如果(当前\u编号>=最大\u编号){
当前_编号=最小_编号;
}
返回当前_编号;
}
公共静态无效显示菜单(){
int current\u number=image\u number;//等于1的全局int
当(!退出){
扫描仪输入=新扫描仪(System.in);
Random rand=新的Random();
int randomvalue=rand.nextInt(最大值)+最小值;//用于另一个方法
System.out.println(“1.forward”);//带有选项的菜单
System.out.println(“2”);
System.out.println(“3”);
System.out.println(“4.Exit”);
系统输出打印项次(当前_编号);
int choice=input.nextInt();
开关(选择){
案例1:
转发(当前_编号);
打破
案例4:
退出=真;
打破
}
}
}
}

无论何时调用该方法,都会传递当前\u号码的副本。然后,当该方法结束时,该副本将被丢弃。尝试改用Integer对象。

无论何时调用该方法,都会传递当前\u编号的副本。然后,当该方法结束时,该副本将被丢弃。尝试改用整数对象。

好的,我想我明白了

switch
语句中,当调用forward方法(其中新号码是return)时,需要一个值来将新号码传递给,否则它会丢失

将代码更改为此可能会有所帮助

switch (choice) {
    case 1:
      current_number = forward(current_number);
      break;

    case 4:
      exit = true;
      break;
}

好的,我想我明白了

switch
语句中,当调用forward方法(其中新号码是return)时,需要一个值来将新号码传递给,否则它会丢失

将代码更改为此可能会有所帮助

switch (choice) {
    case 1:
      current_number = forward(current_number);
      break;

    case 4:
      exit = true;
      break;
}

int
是Java中的一种基本数据类型。这意味着您的函数
forward
current\u number
与您的方法
current\u number
是不同的实例。传入的变量具有相同的值,但引用不同

要修复此问题,您需要将
当前\u编号
的值分配给
转发
的结果

current_number = forward(current_number);
有用的内容如下:


int
是Java中的一种基本数据类型。这意味着您的函数
forward
current\u number
与您的方法
current\u number
是不同的实例。传入的变量具有相同的值,但引用不同

要修复此问题,您需要将
当前\u编号
的值分配给
转发
的结果

current_number = forward(current_number);
有用的内容如下:


请更正代码缩进请正确缩进代码。在当前状态下,我们无法读取它。只要谷歌“java格式化程序”,就有很多工具。我认为你应该简单地说出你想要的,我会看看我是否能为你提供一个更简单的代码,你的代码似乎太多了,可能没有必要!无意冒犯,请解释一下你想完成什么。代码
current_number++forward
方法中的code>仅更改变量的本地副本,而不是从
showMenu
方法传递的
当前\u编号
变量。看看链接的副本,这解释了为什么会出现这种情况。真的很抱歉,我在工作,只是很快把它贴了出来。我感谢所有帮助我的人!请更正代码缩进请正确缩进代码。在当前状态下,我们无法读取它。只要谷歌“java格式化程序”,就有很多工具。我认为你应该简单地说出你想要的,我会看看我是否能为你提供一个更简单的代码,你的代码似乎太多了,可能没有必要!无意冒犯,请解释一下你想完成什么。代码
current_number++forward
方法中的code>仅更改变量的本地副本,而不是从
showMenu
方法传递的
当前\u编号
变量。看看链接的副本,这解释了为什么会出现这种情况。真的很抱歉,我在工作,只是很快把它贴了出来。我感谢所有帮助我的人!虽然这样做有效,但我不建议使用
Integer
。它速度较慢,占用更多空间。只需在
showMenu
中捕获并更新
当前\u number
变量也可以。大多数计算机的内存和速度都可以使int和Integer之间的差异可以忽略不计。如果他在嵌入式系统上工作,这可能会起作用,但这里的情况似乎不是这样。虽然这样做有效,但我不建议使用
Integer
。它速度较慢,占用更多空间。只需在
showMenu
中捕获并更新
当前\u number
变量也可以。大多数计算机的内存和速度都可以使int和Integer之间的差异可以忽略不计。如果他在嵌入式系统上工作