输入: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,然后才尝试访问其元素。