gpt4 book ai didi

java - 如何从方法内部更改变量的值?

转载 作者:行者123 更新时间:2023-12-02 03:40:09 25 4
gpt4 key购买 nike

我正在尝试创建一种方法来增加各种变量的值,这是我当前使用的逻辑类型的示例,但是当该方法完成时,原始变量没有改变。我需要添加或替换什么才能允许值在方法外部更改?

static int num = 2;
static String text = "3";

public static void up(int i, String s){
//Debug
System.out.println("Before Change");
System.out.println("I: " + i);
System.out.println("S: " + s);
System.out.println("Num: " + num);
System.out.println("Text: " + text);

//Code
i = i + 3;
s = String.valueOf(i);

//Debug
System.out.println("After Change");
System.out.println("I: " + i);
System.out.println("S: " + s);
System.out.println("Num: " + num);
System.out.println("Text: " + text);
}

public static void main(String[] args) {
up(num, text);

//Debug
System.out.println("Out of Scope");
System.out.println("Num: " + num);
System.out.println("Text: " + text);
}

最佳答案

您传递给函数的 int iString s按值传递的。这意味着您只收到变量的副本。对变量的操作不会影响其原始值。

您可以修改您的方法并使其返回包含修改后的值的对象:

创建一个新类来封装修改后的值:

class Result{
int i;
String s;
public Result(int i, String s){
this.i = i;
this.s = s;
}
}

现在您的方法可以返回此Result

public static Result up(int i, String s){
//Code
i = i + 3;
s = String.valueOf(i);
return new Result(i, s);
}

然后您可以在主方法中访问修改后的值:

public static void main(String[] args) {   
Result r = up(num, "test");
System.out.println("int result " + r.i);
System.out.println("string result " + r.s);
}

关于java - 如何从方法内部更改变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36916841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com