2017-05-14 77 views
0

輸入:如何以升序形式自動生成數字?

1001 
1003 
1004 
1005 

輸出

1001 
1002 
1003 
1004 
1005 

是否有使用JAVA自動任何實例產生遞增的形式多少?我們說,如果系統檢查的數量1001年至1005年和1002丟失,系統會自動生成1002

+0

就像一個循環? – CIsForCookies

+0

是的,另一個例子,如果1001到1005和1004缺失,那麼系統會自動爲你生成1004。 – NoName

+1

你如何得到輸入?它是否必須分類? – Mureinik

回答

3

你可以在它們之間找到最小的值,然後最大,並生成號碼。

例如,

List<Integer> list = Arrays.asList(1001,1003,1004,1005); 
int min = Collections.min(list); 
int max = Collections.max(list); 
IntStream.range(min, max+1).forEach(System.out::println); 
+0

這是一個很好的例子,我將把它作爲我的參考。謝謝 – NoName

+0

在正確的方向上,但不需要將所有數字加載到內存中。 – Bathsheba

+0

@Bathsheba無法理解你想說什麼。這是關於第一個元素是最小的事實嗎? –

2

您可以使用一個循環利用例如一些條件:

List<Integer> list = new ArrayList<>(); 
list.addAll(Arrays.asList(1001, 1003, 1004, 1005)); 
for (int i = 1001; i < 1005; i++) { 
    if (!list.contains(i)) {//if the list not contain this element 
     list.add(i);//add this element to the list 
    } 
} 
Collections.sort(list);//sort your list 
System.out.println(list);//print your list 

輸出

[1001, 1002, 1003, 1004, 1005] 

溶液2

您也可以使用一組例如:

Set<Integer> set = new HashSet<>(Arrays.asList(1001, 1003, 1004, 1005)); 
for (int i = 1001; i < 1005; i++) { 
    set.add(i);//add element the set 
} 
+4

是不是隻寫1001到1005的所有數字就簡單多了? – Henry

+1

根本不需要檢查輸入列表,除了確定範圍(最小和最大的數字)。特別是,你甚至不需要存儲它(計算可以在讀取和丟棄時完成)。 – Thilo

+0

這是另一種解決方案@Thilo我喜歡它,但Shashwat已經在他的回答中使用它,已經晚了:) –