[英]Finding similar values between arrays
我想編寫一個簡單的程序,它可以接受 x 數量的輸入,將它們放入一個數組中,在不同的數組中再次執行相同的操作,然后檢查兩個列表中出現了哪些輸入。
為了獲得輸入,我想不出一種方法讓它繼續接受任意數量的輸入,並且只有在輸入說“停止”或“結束”或類似的東西時才停止。
我是一個自學成才的初學者,所以請原諒我對這些東西的無知。
我還沒有設置第二個數組,但知道如何設置(我很確定)。 我只是停留在輸入問題以及如何比較輸入
//input of codes
System.out.println("How many codes do you wanna put in?");
x = input.nextInt();
int[] binList = new int[x];
System.out.println("Okay. Enter your codes:");
for (int n = 0; n < x; n++) {
binList[n] = input.nextInt();
}
//sort codes
Arrays.sort(binList);
//display codes
System.out.println("Here are your codes:");
for (int n = 0; n < x; n++) {
System.out.println(binList[n]);
你可以這樣做:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// get first list elements
List<Integer> list1 = getCodes(sc);
// get second list elements
List<Integer> list2 = getCodes(sc);
sc.close();
// display common codes
System.out.println("Common elements are: ");
list1.retainAll(list2);
for (Integer code : list1) {
System.out.println(code);
}
}
/**
* Reads input from console.
*
* @param sc
* @return
*/
private static List<Integer> getCodes(Scanner sc) {
System.out.println("How many codes do you wanna put in?");
int n = sc.nextInt();
List<Integer> list = new ArrayList<>();
System.out.println("Okay. Enter your codes:");
for (int i = 0; i < n; i++) {
list.add(sc.nextInt());
}
return list;
}
}
這是一個答案,顯示了如何使用Set
找到類似的數組元素。 它從兩個int
arrays 開始,將值放入兩個不同的Set
collections,然后遍歷一組(不管哪一組——我的示例是遍歷setOne
)尋找兩組中存在的項目,最后跟蹤在名為itemsInBothSets
的新第三組中匹配。
int[] one = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] two = new int[]{2, 4, 6, 8, 10};
Set<Integer> setOne = new HashSet<>();
for (int i : one) {
setOne.add(i);
}
Set<Integer> setTwo = new HashSet<>();
for (int i : two) {
setTwo.add(i);
}
Set<Integer> itemsInBothSets = new HashSet<>();
for (Integer integer : setOne) {
if (setTwo.contains(integer)) {
itemsInBothSets.add(integer);
}
}
System.out.println(itemsInBothSets.toString());
當我在本地運行時,這是 output:
[2, 4, 6, 8, 10]
對於輸入參與:
繼續接受任意數量的輸入,並且僅在輸入說“停止”或“結束”或類似內容時停止
對於您的情況,最好使用arraylist
而不是array
,因為您正在輸入x
(未知)數量的項目。 以下程序從用戶那里獲取輸入,直到輸入-1
:
ArrayList<Integer> binList = new ArrayList<>();
System.out.println("Enter your codes:");
while (true) {
x = input.nextInt();
if (x == -1) break;
binList.add(x);
}
對比部分:
我假設您已經創建了兩個binList
和binList2
。 我還假設您已經輸入了上述兩個數組列表中可變數量的項目。 現在比較它們,使用以下代碼:
for (int i = 0; i < binList.size(); i++) {
for (int j = 0; j < binList2.size(); j++) {
if(binList.get(i) == binList2.get(j)) {
System.out.print(binList.get(i) + " ");
}
}
}
請注意, size()
方法返回 arraylist 的大小。 這是上述代碼的示例輸入和 output:
樣本輸入:
Enter your codes:
1 2 3 4 -1
Enter your codes:
2 4 5 7 9 -1
樣品 output:
2 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.