【问题标题】:Java method chainingJava 方法链
【发布时间】:2012-07-17 15:24:33
【问题描述】:

我有一行包含各种非分隔字段值的数据。

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 的一个方法,那需要去哪里呢?

我的程序似乎使用了java documentation 中所述的正确语法substring(x,y),但是,没有适用于我的故障排除的实际示例。

我已经查看了this article,但这并不能让我更好地理解这些概念。

为什么会一直出错,我该如何防止?

【问题讨论】:

  • inputLine.Substring 对于substring 应该有一个小写s。即inputLine.substring(...docs.oracle.com/javase/1.4.2/docs/api/java/lang/…
  • 一般情况下,您不需要导入java.lang,因为它是“默认”导入的(假设它包含Object)。但是,这不是实际使用Pattern/Matcher(正则表达式)组合的好案例吗?

标签: java methods chaining


【解决方案1】:

substring 应该在 String 对象上调用。否则,它会在您当前的类中寻找一个名为 substring 的方法。

【讨论】:

    【解决方案2】:

    substring()String的方法,应该是:

    inputLine.substring(...
    

    假设inputLineString 实例。

    【讨论】:

    • 谢谢!当我这样做时, indexOf 成为未知符号。如果 indexOf 也是 String 的一个方法......那需要去哪里?
    • @dwwilson66,inputLine.indexOf(),照常在第一次通话之后已经有了。
    • 您在第二次使用 indexOf 时正确,只是在第一次通话之前错过了 inputLine.
    【解决方案3】:

    试试这个。

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

    【讨论】:

    • 您应该解释为什么您正在做的事情使代码有效,而不仅仅是重写代码。这有助于 OP 了解他/她做错了什么。
    • @publ1c_stat1c 其实……我想我明白了……因为 substring 和 indexOf 都是 String 的方法,我需要在这两种情况下从我的字符串中调用它们:inputline.substring 和 inputline。指数。这是一个正确的说法吗?
    • 是的,这是正确的。必须在对象上调用方法,否则它会查找您的类中定义的方法。由于 substring 不是您的类中的方法cannot find the symbol
    猜你喜欢
    • 2015-07-03
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多