簡體   English   中英

Java應用程序使用for循環和if語句檢查字謎

[英]Java app to check anagram using for loop and if statement

我正在為大學編寫另一個編碼任務。 我在使用for循環(與另一個for循環和if語句)獲取String參數並按字母順序重新排序時遇到麻煩。 然后,該任務要求我們彼此檢查兩個短語,以檢查這些短語是否為字謎。 循環是我所堅持的。 我的for循環應按字母順序輸出第一個短語,但是我的if語句未按預期運行。 布爾語句是不正確的,但是我不確定我應該對那個短語.charAt(i)進行檢查以記錄該字母。

我們不允許使用數組來完成此任務。

import java.util.Scanner;

public class AnagramApp {
    /**Method to reformat string in alphabetical order**/
    public static String orderString(String phrase){
        String output = "";
        for (char alphabet = 'a'; alphabet <='z'; alphabet ++ ){
            for (int i = 0; i < phrase.length(); i++){
                if (phrase.charAt(i) == i){
                    output += phrase.charAt(i);
                }
            }

        }
        return (output);
    }

    public static void main(String [] args){
        /**Setting scanner object to retrieve user input for both phrases **/
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter first phrase");
        String phrase1 = sc.nextLine();
        System.out.println("Enter second phrase");
        String phrase2 = sc.nextLine();

        /**Send phrases to lower case for parsing to new string in char order**/
        phrase1 = phrase1.toLowerCase();
        phrase2 = phrase2.toLowerCase();

        System.out.println(orderString(phrase1));
        System.out.println(orderString(phrase2));
    }
}

我認為問題是,你是用內循環的指數比較, i ,要與外環的指標,比較alphabet

if (phrase.charAt(i) == alphabet)

將if語句中的條件更改為if (phrase.charAt(i) == alphabet)

或者您可以使用以下功能檢查兩個字符串字謎

boolean checkAnagram(String st1, String st2)
{   int arr[]=new int[26];
    int l1=st1.length();
    int l2=st2.length();
    if(l1!=l2){
        return false;
    }
for(int i=0;i<l1;i++){
    arr[st1.charAt(i)-97]+=1;
    arr[st2.charAt(i)-97]-=1;
}
 for(int i=0;i<25;i++){
     if(arr[i]!=0) return false;
 }
    return true;
}

暫無
暫無

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

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