2012-07-17 108 views
0

我有一行數據包含各種非分隔字段值。Java方法鏈接

X55655PlateX58745CupX52689SaucerX52459SpoonH59876KnifeX59866Fork 

我想使用substring和indexOf來拉數據,使用一系列類似於下面的語句。

dataField1 = substring.inputLine((indexOf("Marker1: ")+9),(inputLine.indexOf("Marker2:")-1)); 

我不斷收到error:cannot find symbol指向substring。通常,這是當我不叫在適當的Java包,但我使用了以下內容:

import java.util.*; 
import java.io.*; 
import java.nio.file.*; 
import java.lang.*; 

java.lang.*是哪裏字符串方法活,對吧?我也在初始化String datafield1 = "";

dataField1 = inputLine.Substring((indexOf("Marker1: ")+9),(indexOf("Marker2:")-1)); 

結果indexof接收到cannot find symbnol錯誤。但是,如果indexOf也是String的一種方法,那麼需要去哪裏?

我的程序似乎正在使用正確的語法substring(x,y),如java documentation所述,但是,沒有適用於我的故障排除的實際示例。

我已閱讀this article,但它並不完全讓我把我的頭圍繞着任何更好的概念。

爲什麼dioes不斷出錯,我該如何預防呢?

+1

'inputLine.Substring'應該有一個小寫** s **作爲'substring'。即'inputLine.substring(...'http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#substring%28int,%20int%29 – 2012-07-17 15:35:36

+0

通常,你不需要導入'java.lang',因爲它默認導入了'(因爲它包含'Object')。但是,這不是實際使用'Pattern' /'Matcher'(正則表達式)的好例子嗎?組合? – 2012-07-17 15:39:24

回答

7

substring應在String對象上調用。否則,它正在尋找您當前班級中名爲substring的方法。

+0

它開始凝膠在我的大腦....感謝! – dwwilson66 2012-07-17 15:36:31

4

substring()String的方法,應該是:

inputLine.substring(... 

inputLine假設是String實例。

+0

謝謝!當我這樣做,然後indexOf成爲未知的符號。如果indexOf也是一個字符串的方法...在哪裏需要去? – dwwilson66 2012-07-17 15:30:18

+0

@ dwwilson66,'inputLine.indexOf()',像往常一樣在第一次調用之後已經有了。 – hmjd 2012-07-17 15:31:05

+1

你在第二次使用indexOf時只是錯過了第一次調用之前的'inputLine.'。 – 2012-07-17 15:31:55

0

試試這個。

String dataField1 = inputLine.substring((inputLine.indexOf("Marker1: ")+9), 
             (inputLine.indexOf("Marker2:")-1)); 
+1

你應該解釋爲什麼你正在做的是使代碼有效,而不僅僅是重寫代碼,這有助於OP瞭解他/她是什麼做錯了。 – 2012-07-17 15:29:06

+0

@ publ1c_stat1c其實......我想我明白了......因爲substring和indexOf都是String的方法,所以我需要在兩個實例中從我的字符串中調用它們:inputline.substring和inputline.indexOf。這是一個正確的說法嗎? – dwwilson66 2012-07-17 15:35:34

+1

是的,這是正確的。必須在對象上調用方法,否則它會查找類中定義的方法。由於substring不是你的類中的一個方法,它不能找到符號 – 2012-07-17 15:37:51