我正在为大学编写另一个编码任务。我在使用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));
}
}
答案 0 :(得分:2)
我认为问题在于您正在与内循环i
的索引进行比较,您想要与外循环alphabet
的索引进行比较。
if (phrase.charAt(i) == alphabet)
答案 1 :(得分:0)
将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;
}