无法找到最小和最大结果

  • 本文关键字:结果 java math arraylist
  • 更新时间 :
  • 英文 :


输入:p=1,r=55,x=5

输出:550

从1迭代到55后,如果数字之和=5则可能的结果是5、14、23、32、41、50所以输出是一个更小更大的结果

我试着做下面的代码,但我得到索引脱离债券错误。我认为这是因为if(sum==x) list.add(i);在这个列表中没有添加任何内容。

import java.util.*;
public class wiley{
static void find(int p,int r,int x){
List<Integer> list= new ArrayList<Integer>();
int sum=0,temp,rem;
for(int i=p;i<r;i++){
temp=p;
while(temp>0){
rem=temp%10;
sum+=rem;
temp=p/10;
}
if(sum==x) list.add(i);
sum=0;
}
int l=list.get(0);
int m=list.get(list.size()-1);
System.out.println(l);
System.out.println(m);
}


public static void main(String args[]){
int p=1;
int r=55;
int x=5;
find(p,r,x);
}
}

您是对的,您得到错误,因为没有添加到列表中。这是因为在for循环中,你在变量i上迭代,但你声明了temp = p。将这一行改为temp = i

同样,你必须将temp=p/10更改为temp=temp/10,这样就可以了。

此外,您应该重写函数,使其即使在列表中没有元素也不会抛出异常。例如,您可以检查列表大小是否大于0,然后才尝试访问其元素。

最新更新