为了账号安全,请及时绑定邮箱和手机立即绑定

bug调试问题

bug调试问题

月亮岛Superman 2018-01-13 15:59:59
写了一个小程序,功能大概是:输入两行参数,例如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 回答
  • 0 关注
  • 1181 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信