【问题标题】:How can I fix the startsWith() error of java如何修复java的startsWith()错误
【发布时间】:2022-02-03 08:29:28
【问题描述】:

我无法弄清楚下面的while循环中的startsWith(str)有错误 对于 InfoProcessor 类型,方法 startsWith(String) 未定义。

我想获取以给定字符串 (str) 开头的行之后的字符串。

很高兴得到您的帮助。

import java.util.*;

public class InfoProcessor {
    
    private ArrayList<String> lines = new ArrayList<String>();

    public InfoProcessor(ArrayList<String> lines) {
        this.lines = lines;
    }

    String getNextStringStartsWith(String str) {

        for  (int i = 0 ; i < lines.size(); i++){
        Scanner scanner = new Scanner(lines.get(i));
            while (startsWith(str)){
               String hobby = scanner.nextLine();
              String[] tokens = hobby.split("\\s+");
              return tokens[1];
        
            }

        }
        return null;
    }

【问题讨论】:

  • str 开头的呢?
  • 正确的语法是MainString.startsWith(substring)
  • 目前尚不清楚您要达到的目标。考虑添加示例数据来展示您期望发生的情况。例如。给定行 - ["The Cat Ran Fast", "Dogs are sleepy."] 和 str = "The Cat" 然后方法返回 "Ran"?
  • 是的,我想写什么

标签: java arrays


【解决方案1】:

您正在尝试调用 String 方法,但不是在 String 上调用它。因此,编译器会将您的尝试解释为调用此类上的方法。此类未实现该方法,因此该方法未定义。在您的情况下,您想在单独的行上调用该方法以查看它是否包含前缀。

public String findWordAfterPrefix(String prefix) {
  for (String line : lines) { // iterate over the lines
    if (line.startsWith(prefix)) { // does the line start with the prefix?
      /// find the next word and return it - that is a separate issue! ;)
    }
  }
  return null; // return null if we never found the prefix
}

附言当您提取下一个单词时,您可能会发现其他一些有用的 String 方法(例如 trim()、substring(int)。

【讨论】:

    【解决方案2】:

    错误的意思正是它所说的:InfoProcessor 类中没有 startsWith() 方法。

    您可能打算使用str.startsWith(...) 而不是startsWith(str)

    【讨论】:

    • 感谢您的回复。但我想测试 Variable str 中的单词是否包含在 ArrayList 行中的句子中。我怎样才能改变它?
    猜你喜欢
    • 2015-01-08
    • 1970-01-01
    • 2016-11-14
    • 2019-05-22
    • 1970-01-01
    • 2017-01-18
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多