写了一个小程序,功能大概是:输入两行参数,例如18850 42 9 15 105 63 14 30将下面的50 42 9 15 105 63 14 30按从小到大排序后,从下标为0的元素开始相加,直到相加的和最接近于188返回和。贴上源代码~~public class InterviewQuestion { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Integer str = Integer.valueOf(sc.nextLine());//第一行参数 String secondStr = sc.nextLine();//第二行参数 String[] split = secondStr.split(" "); int[] prices = new int[split.length];//将第二次输入的参数存在prices数组中 for (int i=0;i<split.length;i++) { Integer temp = Integer.valueOf(split[i]); prices[i] = temp; } //将数组按从小到大排序 Arrays.sort(prices); int sum = 0; for(int i=0;i<prices.length;i++) { if(sum >= str) { sum = sum - prices[i-1]; break; }else{ sum = sum + prices[i]; } } System.out.println(sum); sc.close(); } 本来没什么事情,但是诡异的是,随手输入了一组数据185 5 5 5按道理说,应该返回15才对,但是返回了20,代码我觉得没什么问题,然后debug了一下诡异的事情发生了for(int i=0;i<prices.length;i++) prices.length为4i=3 的情况下 居然没有进入for循环进行判断?这是怎么回事,怎么也想不出来问题,求大神帮忙看看。。。
添加回答
举报
0/150
提交
取消