在方法compute(ee, temp1, s1, k)
中从方法smaller()
调用正在传递的参数值与接收的参数值不同,有人可以帮我解决这个问题吗?
*这是我的问题陈述 - 从输入数字中删除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);
}
}
答案 0 :(得分:1)
您获得的无限循环是因为您从smaller()
内部调用了compute()
而在compute()
内调用了smaller()
。如果这是故意完成的,那么还要添加一个终止条件,这将阻止它无限循环。
答案 1 :(得分:0)
您可以使用以下简单代码:
UITextView