gpt4 book ai didi

java - 引用传递问题-Java

转载 作者:行者123 更新时间:2023-11-30 11:03:17 24 4
gpt4 key购买 nike

在从方法 smaller() 调用方法 compute(ee, temp1, s1, k) 期间,传递的参数值与传递的参数值不同收到,有人可以帮我解决这个问题吗?

*这是我的问题陈述-从输入数字中删除k位数字后得到最少的数字。例如输入数字24635,删除3位后最小的数字为23。

我希望最终输出为 23,但会出现无限循环。

public class Delete3 {


public static void main(String[] args) {
int k = 3;
int num = 24635;
StringBuffer num1 =new StringBuffer(Integer.toString(num));
int temp = 0;
StringBuffer s = new StringBuffer(num1);
temp = Integer.parseInt(s.deleteCharAt(0).toString());
temp = compute(num1, temp, s, k);
System.out.println(temp);
}

static int compute(StringBuffer num2, int temp, StringBuffer s, int k) {
while (Integer.toString(temp).length() >= k) {
for (int i = 0; i < num2.length(); i++) {
StringBuffer s1 = new StringBuffer(num2);
String a = s1.deleteCharAt(i).toString();
int temp1 = Integer.parseInt(a);
if (temp > temp1) {
temp = Integer.parseInt(a);
}
}
StringBuffer ee = new StringBuffer(Integer.toString(temp));
if (ee.length() >= k) {
smaller(temp, k);
}
}
return temp;
}

static void smaller(int temp, int k) {
StringBuffer ee = new StringBuffer(Integer.toString(temp));
StringBuffer s1 = new StringBuffer(ee);
StringBuffer s2 = new StringBuffer(ee);
Integer temp1 = Integer.parseInt(s2.deleteCharAt(0).toString());
compute(ee, temp1, s1, k);
}
}

最佳答案

你得到的无限循环是因为你从 compute() 内部调用 smaller()compute()更小()。如果这是故意完成的,那么还要添加一个终止条件,这将防止它无限循环。

关于java - 引用传递问题-Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30480223/

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