2013-10-16 26 views
0

我幾天前纔開始學習java,這是我嘗試學習的第一種語言。所以,請原諒我的無知。接受和排序無限用戶輸入

我正在嘗試創建一個類來接受無限制用戶輸入(以整數5,10,15,500,10003等形式)然後,當用戶將「Ok」寫入「Ok」時停止接受輸入命令行。然後收到提示詢問是升序還是降序。最後,根據用戶的選擇以升序或降序打印數字列表。

我不認爲這會太難編碼。但是,我遇到了一些問題:

  1. 我試圖使用掃描儀接受用戶輸入,並將其放置在ArrayList ....但是,ArrayList只接受一種類型的變量(我需要將所有整數輸入放在ArrayList中,並在寫入字符串「OK」時顯示結果)。

  2. 我不知道如何打印ArrayList,以便數字將按照升序或降序顯示在一行上。

如果有人能給我寫一個示例代碼或指向正確的方向,那將是非常感謝。

+0

我纔開始編碼前幾天。我真的不知道如何編寫代碼,我從示例中學到了很好的東西。我會盡力而爲。 –

回答

0

它看起來像一個功課:)

您檢查輸入,如果將其轉換爲int你將它添加到int數組,如果它是等於「OK」你做的處理,否則你忽略。處理大約是通過它的排序數組,然後循環做:

System.out.println(myArray.get(i)); // print will print inline println will print and go to next line. 
+0

他沒有問一個數組,而是一個'ArrayList'。 – phlogratos

+0

@phlogratos謝謝。 –

+0

沒有功課。我正在嘗試學習Java,因爲...但我希望它是作業!我只想問老師。 –

0

如果沒有類型被指定的商店的ArrayList對象爲Object類型。它可以 混合對象類型(String,MyClass,Array等都是Object類型)。 Int可以放在包裝類Integer中。

沒有類型檢查。根據您的編譯器/ IDE 設置,您可能會收到警告:Name.java使用未經檢查或不安全的操作。

這是有風險的 - 所以上面的答案建議可能會更好地使用Do循環,直到輸入「OK」。

0

您可以使用以下方法:

import java.util.ArrayList; 
import java.util.Collection; 
import java.util.Collections; 
import java.util.List; 
import java.util.Scanner; 

public class Main { 
public static void main(String[] args) { 

    System.out.println("Please enter integer numbers , write 'OK' to exit"); 

List<Integer>inputs=new ArrayList<Integer>(); 

Scanner scanner=new Scanner(System.in); 
String input=scanner.next(); 
while(!"OK".equalsIgnoreCase(input)){ 
    inputs.add(Integer.parseInt(input)); 
    input=scanner.next(); 
} 
if(inputs.isEmpty()) 
    return; 
System.out.println("How would you like to sort 'ASC' or 'DSC'"); 
input=scanner.next(); 
if(input.equalsIgnoreCase("ASC")){ 
    Collections.sort(inputs); 
} 
else if(input.equalsIgnoreCase("DSC")){ 
    Collections.sort(inputs); 
    Collections.reverse(inputs); 
} 
System.out.println(inputs); 
} 
}