簡體   English   中英

數組中兩個整數之和不為零時如何退出循環並打印語句

[英]How to exit the loop and print a statement when the sum of two integers in an array is not equal to zero

我正在嘗試存儲和打印給定數組中兩個整數之和為零的數組。 但是當沒有兩個整數之和為零時,我無法退出循環並打印“沒有兩個整數之和為零”。 請讓我知道如何解決這個問題。

public static void main(String[] args) {
        int[] origArr = { 1, 2, 3, -6, 8, 4 };
        for (int i = 0; i < origArr.length; i++) {
            int firstNumber = origArr[i];
            for (int j = i + 1; j < origArr.length; j++) {
                int secondNumber = origArr[j];
                if (firstNumber + secondNumber == 0) {
                    int[] newArr = new int[2];
                    newArr[0] = firstNumber;
                    newArr[1] = secondNumber;
                    System.out.println(Arrays.toString(newArr));

                }

                else {

                    System.out.println("There are no two integers whose sum is zero ");

                }

            }

        }

    }

當“If”條件不滿足時,只要循環在迭代,系統就會多次打印 sopln。

如果沒有幾個整數符合您的條件,則意味着您已經檢查了數組中的所有可能組合。

如果您檢查了所有組合,則意味着兩個循環都已終止。

“無解”打印應該在兩個循環之后完成。 要知道是否需要打印它,您可以使用布爾值。 找到任何匹配的組合時將其設置為 true:

public static void main(String[] args) {
    int[] origArr = { 1, 2, 3, -6, 8, 4 };
    boolean solutionFound = false;
    for (int i = 0; i < origArr.length-1; i++) {
        int firstNumber = origArr[i];
        for (int j = i + 1; j < origArr.length; j++) {
            int secondNumber = origArr[j];
            if (firstNumber + secondNumber == 0) {
                // set the flag to true
                solutionFound = true;
                System.out.println(firstNumber + ", " + secondNumber);
            }
        }
    }
    // check the flag to see if a solution was found
    if (!solutionFound) {
        System.out.println("There are no two integers whose sum is zero ");
    }
}

這是一個帶有一些日志記錄和數組中發現的正數的另一個:

public static void main(String[] args) {
    int[] origArr = { 1, 2, 3, -6, 8, 4 , -4 };
    boolean foundit = false;
    for (int i = 0; i < origArr.length; i++) {
        int firstNumber = origArr[i];
        for (int j = i + 1; j < origArr.length; j++) {
            int secondNumber = origArr[j];
            System.out.println(Integer.toString(firstNumber));
            System.out.println(Integer.toString(secondNumber));
            if (firstNumber + secondNumber == 0) {
                int[] newArr = new int[2];
                newArr[0] = firstNumber;
                newArr[1] = secondNumber;
                System.out.println(Arrays.toString(newArr));
                System.out.println("Found !!!!!");
                foundit = true;
                }
            }
        }
        if (foundit == false) {
            System.out.println("There are no two integers whose sum is zero ");
        }
    }
}

以下stream解決方案演示:

  • 尋找解決方案的不同方法。
  • 以及在沒有時正確打印。

它基本上使用一對Intstreams進行嵌套循環,並創建一個包含要測試的值的數組流。 flatMap將流的流合並為一個,然后根據數組元素的總和過濾數組。 然后將它們收集到一個list 然后打印所有解決方案。 如果列表為空,則打印適當的消息。

        int len = origArr.length;
        List<int[]> list = IntStream.range(0, len - 1)
            .mapToObj(i -> IntStream.range(i + 1, len)
                .mapToObj(j -> new int[] { origArr[i], origArr[j] }))
            .flatMap(Function.identity())
            .filter(a -> a[0] + a[1] == 0)
            .collect(Collectors.toList());

        if (list.isEmpty()) {
            System.out.println(
                    "There are no two integers whose sum is zero ");
        } else {
            list.forEach(arr -> System.out.println(Arrays.toString(arr)));
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM