簡體   English   中英

我正在嘗試檢查字謎

[英]I am trying to check for Anagram

為什么代碼向我顯示缺少 return 語句的錯誤?

我想要做的是檢查字符串的長度,然后是其內容並比較它們。

import java.util.Scanner;

public class Solution {
    static boolean isAnagram(String a, String b) {
        char[] arr1 = a.toLowerCase().toCharArray();
        char[] arr2 = b.toLowerCase().toCharArray();
        java.util.Arrays.sort(arr1);
        java.util.Arrays.sort(arr2);
        if (arr1.length != arr2.length) {
            if (!arr1.equals(arr2)) {
                System.out.println("Not Anagrams");
            }
            return false;
        } else if (arr1.equals(arr2)) {
            System.out.println("Anagrams");
            return true;
        }
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String a = scan.next();
        String b = scan.next();
        scan.close();
        boolean ret = isAnagram(a, b);
        System.out.println((ret) ? "Anagrams" : "Not Anagrams");
    }
}

主要問題

您需要在 if 語句之外有一個“返回”。

else if(arr1.equals(arr2))
        {
             System.out.println("Anagrams");
             return true;
        }  

return false; //add this here. I tested, error goes after this.
}

在這里測試 - https://onlinegdb.com/S188-FdGL

額外的

你的字謎邏輯是錯誤的。

正確的邏輯應該是這樣的(按照評論來理解)。

import java.util.Scanner;
import java.util.Arrays;

 public class Solution {

 static boolean isAnagram(String a, String b) 
    {
        char[] arr1 = a.toLowerCase().toCharArray();
        char[] arr2 = b.toLowerCase().toCharArray();

        int n1 = arr1.length; 
        int n2 = arr2.length; 

        // If length is different, then they cannot be Anagram 
        if (n1 != n2) return false; 

        // Sort the Character Arrays 
        Arrays.sort(arr1); 
        Arrays.sort(arr2); 

        // Compare each characters of sorted Character Arrays,
        // if any character mismatches, it is not an Anagram
        for (int i = 0; i < n1; i++) 
            if (arr1[i] != arr2[i]) 
                return false; 

        // If all characters of both character Arrays are same,
        // only then, the String are Anagrams, so return true
        return true;

        // Also, remove the print statements from this method,
        // as you are already printing in the main method,
        // so it creates duplicate prints
    }


    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        String a = scan.next();
        String b = scan.next();
        scan.close();

        boolean ret = isAnagram(a, b);
        System.out.println( (ret) ? "Anagrams" : "Not Anagrams" );
    }
}

在這里測試 - https://onlinegdb.com/rJe-OEtuGL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM