【问题标题】:Can not use the split() method [closed]不能使用 split() 方法[关闭]
【发布时间】:2020-03-11 08:27:36
【问题描述】:

我正在尝试拆分作为数组元素的字符串,但编译器说:类型不匹配,无法从 String[] 转换为 String。我不明白,因为如果我们有一个字符串数组,那么这个数组的元素必须是 String 类型而不是 String[]

这是代码:

while((s=buffereader.readLine())!=null)
{
    words=s.split(" "); 
    for (String word : words) 
    {
        s=words[0];
        s=s.split("T");
    }
}

【问题讨论】:

  • 您希望words.equals(input) 究竟做什么? 哪个词会相等?
  • words 是一个数组。为什么它会等于一个字符串?
  • words = s.split(" ") 语句之后是否缺少另一个循环?

标签: java arrays string split


【解决方案1】:

您的编译器在s=s.split("T"); 上出错,其中s 是一个字符串,而不是一个数组。

同样,words.equals(input) 并没有达到您的预期,因为数组永远不会等于字符串。您需要扫描数组以查看是否有任何元素相等。如果您使用现代 IDE 而不是在 CLI 中编译,那么您可能会更快地发现此错误。

假设您要检查每行中是否包含input,然后拆分字母@9​​87654325@ 上的第一列,这就是您想要的。

String s;
List<String> words;
while((s=buffereader.readLine()) != null) {
    words = Arrays.asList(s.split("\\s+"));  // Split by one _or more_ spaces
    if (words.contains(input)) {
        s = words.get(0);
        words = Arrays.asList(s.split("T"));
    }
 }

【讨论】:

    【解决方案2】:

    我发现了问题。这就是我试图做的

    public static void timeStamp() throws IOException {
            File log= new File(parametrization.link[15]);
            FileReader fileReader = new FileReader(log);
            BufferedReader buffereader = new BufferedReader(fileReader);
            String s;
            String[] s1;
            String[] words;
            String input="gracefully";
            while((s=buffereader.readLine())!=null)
             {
                words=s.split(" "); 
                for (String word : words) 
                {
                if (word.equals(input));
                {
                    s=words[0];
                    s1=s.split("T");
    
                }
    
                }
             } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-05
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多