2012-07-17 198 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