2014-03-05 39 views
0

我想從使用掃描儀類的文本文件中讀取輸入並將其傳遞到數組中。我知道如何使用掃描儀類讀取輸入。我在這裏遇到的唯一問題是我無法傳入數組。使用掃描儀將文本文件中的輸入讀入數組

public class ReadItemData { 

    public static void main(String[] args) throws Exception { 

     Scanner aScanner = new Scanner(new FileReader(
       "src//chapter11//Items.txt")); 

      while (aScanner.hasNext()) { 
       String code = aScanner.next(); 
       String sku = aScanner.next(); 
       double qty = aScanner.nextDouble(); 

       System.out.println(code + " " + sku + " " + qty); 

     } 
    } 

上面的代碼沒有數組概念。我想擴展相同的概念,將上述數據讀入大小爲100的數組。任何建議都會有所幫助。我的最終目的是按照代碼對輸入進行排序,這就是我使用可比較的接口進行排序的方法。我該如何擴展這個數組的概念?

我用這樣的分選(不陣列概念)

class Item implements Comparable { 
    private int qty; 
    private String sku,code; 

    public Item(int qty, String sku,String code) { 
     this.qty = qty; 
     this.sku = sku; 
     this.code = code; 
    } 

    public int getQty() { 
     return qty; 
    } 

    public String getSku() { 
     return sku; 
    } 
    public String getCode() { 
      return code; 
    } 

    public int compareTo(Object o) { 
     Item i = (Item) o; 
     if (this.getQty() < i.getQty()) 
     { 
      return -1; 
     } 
     if (this.getQty() > i.getQty()) 
     { 
      return 1; 

      } 
     return 0; 
    } 
} 

謝謝!

+1

假如你曾經宣告一個數組?您將需要一個3「列」和「100」行的二維數組。 – Smutje

回答

0
String[] array = new String[100]; 
    int currentIndex = 0;  
    while (aScanner.hasNext()) { 
      String code = aScanner.next(); 
      String sku = aScanner.next(); 
      double qty = aScanner.nextDouble(); 

      array[currentIndex] = code; 
      array[currentIndex++] = sku; 
      array[currentIndex++] = ""+qty; 
      currentIndex++; 

    } 
+0

這不是一個真正的答案,因爲每行都有三列'code,sku,qty',這就是我使用二維數組的原因,請參閱我的答案。 –

+0

你好。我同意你的看法,一個二維數組更適合這種情況。但我認爲這是學校工作,OP正在學習陣列。他的文本文件被稱爲「src // chapter11 // Items.txt」。 – Solace

+0

是的,的確如此。但是,1D數組不會給出真實結果,您的代碼只能讀取33行,因爲它是100行,每次迭代都會填充3個索引,對嗎?這就是爲什麼我們應該使用二維數組。 –

0

正如評論所說,你可以用100行3列像這樣的二維數組:

Object[][] array = new Object[100][3]; 
    int i=0,j=0; 
    while (aScanner.hasNext()) { 
     String code = aScanner.next(); 
     String sku = aScanner.next(); 
     double qty = aScanner.nextDouble(); 
     array[i][j++] = code; // array of row i and columns j 
     array[i][j++] = sku; 
     array[i][j] = qty; 
     i++; // increment i since it's for rows 
     j=0;//reset j because it's for columns 

    } 
+0

我能夠從上面的概念使用數組獲得輸入。任何關於如何使用Comparable接口對i/p進行排序(按代碼排序,sku)的建議? – Sandy

+0

有很多的方法,我發現這個鏈接[** Java Arrays.sort 2d數組**](http://stackoverflow.com/questions/15452429/java-array-sort-2d-array) –