在Java中,只打印数组中双倍于另一个数字的数字。

我在练习算法,比方说我们有一个数组,其元素有 2, 3, 9, 12, 7, 18那么 我想打印18,只是因为它是9的两倍。. 当我打印结果时,它总是显示更多的行,但是,打印的数字(如果有的话)是好的。我怎样才能正确显示结果?(只使用数组。)我知道这是个愚蠢的问题,但我试了很多方法,结果只会更糟。

现在,它显示给我的例子是这样的(140是正确的,但其他行不需要)。

The following number is doubled of another number from the array: 0
The following number is doubled of another number from the array: 0
The following number is doubled of another number from the array: 140
The following number is doubled of another number from the array: 0
The following number is doubled of another number from the array: 0

我的代码:

public class DoubleNums {

    public static void main(String[] args) {

        Random random = new Random();

        int[] array = new int[50];
        int[] even;
        int[] doubleNum;
        int count = 0;
        int doubles = 0;

        for (int i = 0; i < array.length; i++) {
            array[i] = random.nextInt(200);
            System.out.println(array[i] + " ");
        }
        for (int j = 0; j < array.length; j++) { 
            even = new int[array.length];
            if (array[j] % 2 == 0) {
                even[count] = array[j];
                count++;
            }
            for (int k = 0; k < array.length; k++) {
                doubleNum = new int[array.length];
                if (array[j] / 2 == array[k]) {
                    even[doubles] = k;
                    doubles++;
                    System.out.println("The following number is doubled of another number from the array: " + even[doubles]);               
                }                
            }               
        }
        System.out.println("Number of even nums: " + count);
        }
    }

解决方案:

我看到你要求用你自己的代码来解决… …

我知道这更快,但我认为我们可以找到一个解决方案,用我的代码,一些小的变化。

所以我试图理解你想做什么,但我一直无法破解你的方法,所以从你的 宏观 我创建了一个更清晰的版本。


变化

  • 我使用了一个ArrayList (list)作为支持,而不是你的数组(even). 该 List 在你的情况下是非常方便的,因为它具有 contains() 函数,而且它的大小也是可变的。
  • 我在数组中取了一个偶数,然后寻找其中是否有至少一个 “半”。

代码

public static void main(String[] args) {
    Random random = new Random();

    int[] array = new int[20];
    ArrayList<Integer> list = new ArrayList<>();
    int evenNumber = 0;

    for (int i = 0; i < array.length; i++) {
        array[i] = random.nextInt(100);
    }

    System.out.println(Arrays.toString(array));

    for (int i = 0; i < array.length; i++) {
        // If I found an even number and this is NOT already in the list then I'll study it
        if (array[i] % 2 == 0 && !list.contains(array[i])) {
            evenNumber = array[i];
            for (int j = 0; j < array.length; j++) {
                // I add "evenNumber" to the list only if at least one its "half" exist in the array
                if (array[j] * 2 == evenNumber) {
                    list.add(evenNumber);
                    // I dont need to search more, I already found its "half"!
                    break;
                }
            }
        }
    }

    System.out.println("Doubled nums: " + list);
}

样品输出

[71, 88, 45, 97, 64, 31, 54, 12, 14, 86, 22, 42, 35, 44, 70, 65, 93, 85, 99, 14]
Doubled nums: [88, 44, 70]

给TA打赏
共{{data.count}}人
人已打赏
未分类

如何在主题中使用assets API添加液体文件URL的Shopify主题

2022-9-13 15:35:20

未分类

列表理解

2022-9-13 15:46:36

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索