2015-12-15 34 views
0

比方說,我有一個混合列表(字符串&整數數據類型)100行的長度。 即用掃描儀匹配混合列表元素

Lines= 
    <Thanks For 44 55> 
    <Helping Me 43 66> 
    etc... 

我想使用的掃描器類兩個字符串匹配(&提取相應的數字也一樣)。 如何編寫一個isolate方法來執行此操作。 目標是將兩個相應的整數值輸入一個單獨的calculate方法。 這是我的。

private List<String> lines = new ArrayList<String>(); 


public void isolate(String s, String l){ 
     if(String s = this.line.matches(".s*") && String l=this.line.matches(".l*")){ 
     lineNew = lines[s][l]; 
     //// extract the integer values (index 2, index 3) from linesNew here  } 
    } 
+1

請定義「混合陣列」。是不是隻是一個字符串數組,絕對不是「混合」?如果是這樣,請改變它。使它成爲一個自定義類型的數組,它有一個字符串和兩個整數,然後你的比較很容易。編輯:它是一個數組呢?你的代碼顯示你正在使用列表,而不是數組。是的,這可能是挑剔的,但編程是一個挑剔的業務。 –

+0

你的代碼編譯?String s = this.line.matches(「。s *」)? –

+0

同樣,你不使用數組,它不是混合類型,它是一個純粹而簡單的String類型。 –

回答

1

你在評論中指出:

更新上面的細節,它與整數&字符串數據類型的列表。

我不同意,不,它是一個字符串列表,句點。該字符串可能包含整數和子字符串的表示,但它們都保存在一個字符串中。一個體面的解決方案的關鍵是不要這樣做,不要使用String來表示邏輯上可以用更爲健全的方式表示的東西。所以,...

  • 創建一個自定義類,一個有兩個專用字符串和兩個私人詮釋場,
  • 與getter和setter方法,構造函數,...
  • 讓它實現Comparable<...>即使一個或兩個數字字段表示其「自然」順序。
  • 當您使用Scanner讀取您的行時,將該行解析爲您自定義類的組成字段類型,然後使用它創建對象。
  • 然後將其放入您的List<MyCustomClass>
  • 做到這一點,並創建你的方法變得微不足道。
  • 考慮使用第二個內部掃描儀,一個用於線條,並且可以幫助您將線條分解爲兩個字符串和兩個整數。確保在循環的每次迭代中關閉這個內部掃描器,以免浪費資源。
+0

細節很重要,道歉。 因此,數據最初是從帶.txt文件的bufferread方法讀取的。 Java中的元素可能實際上不能被整數和字符串理解。 – Javaing

+0

@Javaing:這很好,但你應該再次將文本翻譯成符合OOP的數據,純粹而簡單。 –