[英]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.