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

标签 java arrays

你好,我在尝试编写一个函数来创建一个包含整数的数组时遇到了困难,这相当于我的简单数学问题。

我的问题不是将整数添加到数组中,而是找到可以加起来构成数学问题的正确整数。

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

所以我希望我的数组最多能容纳 10 个整数,加起来等于 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, _ }(其中尚未选择我们的第四个元素)。

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

  4. 设置myArray[3] = 9;

需要注意的几点:

  • 您可能需要修改我给出的可能的随机数范围 ( 1-6 )。考虑一下如果我们生成的数组是 { 2, 1, 2, _ } 会发生什么...然后没有数字可以确保元素之和为 20。

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

关于java - 如何创建等于某个值的整数数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23985498/

相关文章:

java - 为什么即使我的抽象类具有 protected 构造函数,也会创建默认构造函数?

java - 如何在没有 JFrame 的情况下在控制台上输入图形?

c++ - 非静态数据成员 c++ 的无效使用

arrays - 在 perl 中打印数组散列值

Java数组: Unable to store new values into an array

java - 为什么静态字段(不是final)在java的内部类中受到限制

java - 如何模拟 System.in?

arrays - 作业 C 用字符串编程栈和堆

c - 为什么结构分配适用于结构中的数组

java - 如何解决错误“表达式的非法开始?”