[英]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.