繁体   English   中英

如何创建等于某个值的整数数组?

[英]How to create an array of integers that equal a certain value?

您好,我在尝试编写一个可以创建一个保存整数的数组的函数时遇到了困难,这等于我的简单数学问题。

我的问题不是在数组中添加整数,而是找到了可能会导致数学问题的正确整数。

例如我有一个简单的数学问题,例如:10 + 10 =? 我们知道等于20

所以我希望我的数组最多容纳十个整数,将它们加在一起等于20。

这就是我一直在尝试的代码,但没有得到我想要的结果。

    while (totalCount != answer
            && count < setCount) {

        randomNumber = rand.nextInt((int) answer / 2) + 1;

        if(count < setCount) {
            sumOfBalloons.add(randomNumber);
            totalCount += randomNumber;
            count++;
        }

        if(totalCount > answer) {
            count = 0;
            totalCount = 0;
            sumOfBalloons.clear();
        }
    }

我试图找到随机数加起来得出数学问题的答案,以便我可以将它们画在气球上。 问题是我永远无法获得十个数字来等于while循环中的答案。

有谁知道做这种事情的某种方式?

需要数组来保存3-10个等于我数学问题答案的整数。


**更新代码,这要归功于我收到的建议,我设法修复了while循环,现在看起来像这样

不得不这样发布,因为我的代表非常低。 抱歉。

    while (totalCount != answer) {

        randomNumber = rand.nextInt((int) answer / 2) + 1;

        if(totalCount + randomNumber > answer) {
            randomNumber = rand.nextInt((int) answer - totalCount) + 1;
        }

        if(count + 1 == setCount) {
            randomNumber = answer - totalCount;
        }

        if(count < setCount) {
            sumOfBalloons.add(randomNumber);
            totalCount += randomNumber;
            count++;
        }

        if(totalCount > answer
                || totalCount == answer
                && count < setCount
                || totalCount != answer
                && count == setCount) {
            count = 0;
            totalCount = 0;
            sumOfBalloons.clear();
        }
    }

这就是我从此代码进入控制台的结果

 Total count = 10
 Total totalCount = 20
 sumOfBalloons 0 = 2
 sumOfBalloons 1 = 3
 sumOfBalloons 2 = 3
 sumOfBalloons 3 = 2
 sumOfBalloons 4 = 1
 sumOfBalloons 5 = 4
 sumOfBalloons 6 = 2
 sumOfBalloons 7 = 1
 sumOfBalloons 8 = 1
 sumOfBalloons 9 = 1

我认为这里有一些选择:生成总计为20的随机数。

这是一种可能的解决方案:

  1. 例如,创建一个长度为4的数组。

  2. 为数组的前3个索引中的每个索引生成1到6之间的随机数。

    此时,您将具有以下形式的数组:{4,5,2,_}(此处尚未选择第4个元素)。

  3. 将前三个元素求和:4 + 5 + 2 =11。通过计算20-current_total(11)= 9来确定第四个元素。

  4. 设置myArray[3] = 9;

注意事项:

  • 您可能需要修改我提供的可能的随机数范围(1-6)。 考虑一下如果我们生成的数组结果为{2,1,2,_}会发生什么……那么没有数字可以确保元素的总和为20。

  • 另一种选择是使用arrayList而不是数组。 这样做的好处是,您可以继续将元素添加到arrayList中,直到达到20(然后完成)或结束(在这种情况下,您删除最新的元素并再次开始添加)。 您也不需要(或无法)提前知道arrayList的长度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM