Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串转换为对象参数_Java - Fatal编程技术网

Java 将字符串转换为对象参数

Java 将字符串转换为对象参数,java,Java,该程序是一个文本引擎,接收文本文件并对其进行分析 public Word findFirst(String text) throws SearchableException, ContentNotLoadedException { for(int i = 0;i<words.size();i++) { if(text.equals(words.get(i).text)) { return words.get(i).text;

该程序是一个文本引擎,接收文本文件并对其进行分析

public Word findFirst(String text) throws SearchableException, ContentNotLoadedException {
    for(int i = 0;i<words.size();i++) {
        if(text.equals(words.get(i).text)) {
            return words.get(i).text;
        }
    }   
}
这是有问题的单词类


编辑:我无法以任何方式更改方法签名或Word类。

实际上,该方法的返回类型是
Word
,因此当您的
返回
时,它不能从
String
转到
Word

  • 要解决此问题,请将返回类型更改为
    String

    public String findFirst(String text) throws SearchableException, ContentNotLoadedException {
        for(int i = 0;i<words.size();i++) {
            if(text.equals(words.get(i).text)) {
                return words.get(i).text;
            }
        }        
    }
    

  • 提示简化循环

  • foreach
    循环

    for (Word word : words) {
        if (text.equals(word.text)) {
            return word.text;
        }
    }
    
  • 溪流

    return words.stream().map(Word::getText).filter(text::equals).findFirst().orElseThrow(()->new SearchableException());
    

  • 实际上,该方法的返回类型是
    Word
    ,因此当
    return
    给出
    String
    时,它不能从
    String
    转到
    Word

  • 要解决此问题,请将返回类型更改为
    String

    public String findFirst(String text) throws SearchableException, ContentNotLoadedException {
        for(int i = 0;i<words.size();i++) {
            if(text.equals(words.get(i).text)) {
                return words.get(i).text;
            }
        }        
    }
    

  • 提示简化循环

  • foreach
    循环

    for (Word word : words) {
        if (text.equals(word.text)) {
            return word.text;
        }
    }
    
  • 溪流

    return words.stream().map(Word::getText).filter(text::equals).findFirst().orElseThrow(()->new SearchableException());
    

  • 如果您使用的是java-8,则可以使用此命令返回匹配的第一个字符串:

    public String findFirst(String text) throws SearchableException {
        return words.stream().filter(i -> i.text.equals(text)).findFirst().get().text;
    }
    
    或者,如果要返回整个对象,可以使用:

    public Word findFirst(String text) throws SearchableException {
        return words.stream().filter(i -> i.text.equals(text)).findFirst().get();
    }
    

    如果您使用的是java-8,则可以使用此命令返回匹配的第一个字符串:

    public String findFirst(String text) throws SearchableException {
        return words.stream().filter(i -> i.text.equals(text)).findFirst().get().text;
    }
    
    或者,如果要返回整个对象,可以使用:

    public Word findFirst(String text) throws SearchableException {
        return words.stream().filter(i -> i.text.equals(text)).findFirst().get();
    }
    

    由于无法更改方法签名,因此必须返回Word实例。因此,您不应直接返回Word.text,而应返回Word实例或新实例。

    由于无法更改方法签名,因此必须返回Word实例。因此,您不应该直接返回Word.text,而应该返回Word实例或一个新实例。

    只需
    返回words.get(i)
    ,而不是
    返回words.get(i).text

    public Word findFirst(String text) throws SearchableException, ContentNotLoadedException {
        for(int i = 0;i<words.size();i++) {
            if(text.equals(words.get(i).text)) {
                return words.get(i);
            }
        }   
    return null;
    }
    
    public Word findFirst(字符串文本)引发SearchableException、ContentNotLoadedException{
    
    for(int i=0;i只
    返回单词。get(i)
    而不是
    返回单词。get(i)。text

    public Word findFirst(String text) throws SearchableException, ContentNotLoadedException {
        for(int i = 0;i<words.size();i++) {
            if(text.equals(words.get(i).text)) {
                return words.get(i);
            }
        }   
    return null;
    }
    
    public Word findFirst(字符串文本)引发SearchableException、ContentNotLoadedException{
    

    对于(int i=0;i
    public String findFirst…
    ?为什么不只是“return words.get(i)”而不是“return words.get(i).text”;我发誓我以前试过了,它不起作用,但现在它起作用了…..非常感谢Spara!没关系,兄弟:这在编程世界中会发生很多事情!现在我将发表我的评论作为你的答案:)
    public String findFirst…
    ?为什么不直接用“return words.get(i)”而不是“return words.get(i).text”;我发誓我之前试过了,但没用,但现在可以了…..非常感谢Spara!没关系,兄弟:这在编程世界中会发生很多事情!我现在就给你一个答案:)问题不在于如何重写循环,而在于类型转换。我很好奇这种方法是否更有效。对于作者的原始代码,一旦找到匹配项,该方法将返回,但您的实现首先过滤整个列表,然后返回列表中的第一个元素。如果有1000个匹配项,我感觉就像OP的代码w我会运行得更快。这不是筛选器的工作方式。它与OP的代码几乎相同,只是我们使用的是流。一旦筛选器条件的计算结果为true,循环的迭代将停止,相应的实例将返回,原因是
    findFirst()
    。更多信息第二个示例不会编译,因为findFirst()返回一个可选值,而不是一个单词。@DodgyCodeException-很好!错过了
    .get()
    问题不在于如何重写循环,而在于类型转换。我很好奇这种方法是否更有效。对于作者的原始代码,一旦找到匹配项,方法将返回,但您的实现首先过滤整个列表,然后返回列表中的第一个元素。如果有1000个匹配项,我感觉就像OP的一样代码将运行得更快。这不是筛选器的工作方式。它与OP的代码几乎相同,只是我们使用的是流。一旦筛选器条件的计算结果为true,循环的迭代将停止,并且相应的实例将返回
    findFirst()
    。更多信息第二个示例不会编译,因为findFirst()返回一个可选值,而不是一个单词。@DodgyCodeException-很好!错过了
    .get()
    如果找不到文本,它会做什么?当前不会编译,因为不是所有路径都返回值。如果找不到文本,它会做什么?当前不会编译,因为不是所有路径都返回值。流示例迫使您考虑当找不到文本时会发生什么。循环实现如何ons?流示例迫使您考虑当找不到文本时会发生什么。循环实现如何?