【问题标题】:Java Program ArrayList: using Collections.shuffle() inside a loopJava 程序 ArrayList:在循环中使用 Collections.shuffle()
【发布时间】:2020-02-22 16:18:14
【问题描述】:

我在我的第一个 java 类。我们才刚刚开始使用数组。我得到了 9 个数字:45000,30000,150000,200000,175000,250000,195000,225000,300000。并且需要编写一个java程序,将列表分解为3组3个数字。每组的总和必须大于 500,000。

我的第一个想法是打乱数组并测试总和索引 0,1,2 >500000 ... 总和索引 3,4,5 >500000 ...总和索引 6,7,8 >500000?并循环它直到满足条件。 “洗牌”数组的想法使我研究了 ArrayList 和 Collections.shuffle() 方法。

我认为我的 ArrayList 代码是正确的。程序编译。而且我的 while 条件似乎是正确的,但我得到的输出少于 500000。

任何见解将不胜感激。

public static void main(String[] args) { // TODO 自动生成的方法存根

    ArrayList<Integer> productPrices = new ArrayList<Integer>();

    productPrices.add(45000);
    productPrices.add(30000);
    productPrices.add(150000);
    productPrices.add(200000);
    productPrices.add(175000);
    productPrices.add(250000);
    productPrices.add(195000);
    productPrices.add(225000);
    productPrices.add(300000);



    List<Integer> prices = Arrays.asList(45000,30000,150000,200000,175000,250000,195000,225000,300000);
    int salesRep2 = 0;
    int salesRep3 = 0;
    int salesRep4 = 0;



    do 
    {   
    Collections.shuffle(prices);

    salesRep2 = prices.get(0) + prices.get(1) + prices.get(2);
    salesRep3 = prices.get(3) + prices.get(4) + prices.get(5);
    salesRep4 = prices.get(6) + prices.get(7) + prices.get(8);


    }while((salesRep2 < 500000) && (salesRep3 < 5000000) && (salesRep4 < 500000));


    System.out.println(salesRep2);
    System.out.println(salesRep3);
    System.out.println(salesRep4);

    }

    }

【问题讨论】:

  • 如果您希望它们都至少为 500k,则应在条件中使用 || 而不是 &amp;&amp;
  • 是大于500K还是大于等于500K?你说大于文本而不是代码。

标签: java arrays loops arraylist do-while


【解决方案1】:

salesRep3 &lt; 5000000 有一个 0 到多个。

注意事项:

  • 您可以在号码中使用下划线:salesRep3 &lt; 5_000_000
  • 您可以在静态常量中声明该常量,这样您的代码就可以使用其他值进行编译。

【讨论】:

  • 值得一提的是,下划线可以用在文字中,这使得这种错误更容易被发现:5_000_000
  • 谢谢你的下划线建议..这让我的额外零显而易见..谢谢你的||建议。你是对的,这是一个逻辑错误而不是语法错误。
  • 现在我想为 ArrayList 中的九个数字中的每一个分配一个产品名称。例如 45_000 = 回形针,30_000 = 订书钉...最终,我想为 3 个销售代表编程输出 3 个产品,以便每个销售代表的销售总额大于 500_000 .. 接下来我应该学习什么,以便将其添加到我的程序中.
猜你喜欢
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 2013-08-27
  • 2012-11-07
  • 2021-02-11
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多