Java方法输出不返回新值?
我在想我遇到的一些问题 基本上,我的问题是,我的方法返回的值不正确 我使用print-line语句只是为了确保它正常工作,但它总是返回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
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);
有用的内容如下:
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之间的差异可以忽略不计。如果他在嵌入式系统上工作