方法不返回字符串

Method not returning a string

我收到一个错误。该方法应 return 一个字符串。我是 java 的新手,正在学习解决一个字谜问题。

import java.util.*;

class FindDuplicates
{   
    public String findAnagram(String sc)
    {
        for(int i=0;i<sc.length();i++)
        {
            for(int j=i+1;j<sc.length();j++)
            {
                if(sc.charAt(i)==sc.charAt(j))
                {  
                    String a;
                    a="anagram";
                    return a;
                }
                else
                {
                    String b;
                    b="not anagram";
                    return b;
                }


            }

        }

    }
public static void main(String args[])
{
    Findduplicates f=new FindDuplicates();
    System.out.println("Enter a string");
    Scanner s=new Scanner(System.in);
    String sc=s.nextLine();
    f.findAnagram(sc);
    }
}

我尝试 returning true/false 并得到了输出,但现在出现错误。

您的方法 findanagaram 需要 return 一个字符串值。但是您 return 只在循环内编辑了值。如果条件永远得不到满足怎么办。因此,编译器需要知道 return 的值。您必须在循环外提供一些值。

    public String findanagaram(String sc) {
        for (int i = 0; i < sc.length(); i++) {
            for (int j = i + 1; j < sc.length(); j++) {
                if (sc.charAt(i) == sc.charAt(j)) {
                    String a;
                    a = "anagram";
                    return a;
                } else {
                    String b;
                    b = "not anagram";
                    return b;
                }
            }
        }
        return "undefined";
    }

PS:- 你必须根据你的逻辑来寻找变位词,因为到目前为止你所做的似乎没有用。

注意:您查找字谜的逻辑是错误的。编译问题将通过以下代码解决 -

public String findAnagram(String sc) {
    String anagramOutput = "putWhateverYouWantToPut";
    for (int i = 0; i < sc.length(); i++) {
        for (int j = i + 1; j < sc.length(); j++) {
            if (sc.charAt(i) == sc.charAt(j)) {
                anagramOutput = "anagram";
            } else {
                anagramOutput = "not anagram";
            }
            return anagramOutput;
        }
    }
    return anagramOutput;
}