【发布时间】:2018-03-15 04:13:22
【问题描述】:
我有一个任务要编写一个程序,该程序接受 2 个单词,然后返回它们是否是彼此的字谜。目前我正在尝试遍历第一个字母的每个字母,并检查它是否与第二个单词中的字母匹配。然后,我会将 counter int 与任一单词的总长度进行比较,如果它们是字谜,则它们应该相等。
我有一个错误,如果单词是字谜,我会得到一个无限循环向上计数,并且计算以程序结尾的单词中的字母数,如果不是的话。
分配声明“仅使用 String 类中可用的方法。不要使用其他 Java 库实用程序”,因此我无法将单词放入数组并使用 arrays.Sort。
import java.util.Scanner;
public class anagram {
public static void main (String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter two strings");
String s1 = scanner.next();
String s2 = scanner.next();
int counter = 0;
int number1 = 0;
int number2 = 0;
if(s1.length() != s2.length()) {
System.out.println("The strings are not anagrams");
} else {
for(int i = 0; i < s1.length() ; i++) {
for(int j = 0; j < s1.length() ; i++) {
// number1 = i;
// number2 = j;
if(i == s1.length()){
number1 = i - 1;
}
if(j == s2.length()){
number2 = j - 1;
}
if(s1.charAt(number1) == s2.charAt(number2)) {
counter ++ ;
System.out.println(counter);
}
}
}
System.out.println(counter);
}
System.out.println(s1 + " " + s2 + " " + counter);
}
}
【问题讨论】:
-
您在嵌套循环中将变量 i 增加两次。在你的 j 循环中你有 i++ 它应该是 j++
-
@T Jones 你可以使用数组吗?
-
是否允许获取每个字符的 ASCII 值?因为这样你就可以将值相加并检查是否相等
-
您也可以使用
String.replaceFirst(String regex, String replacement)解决此问题并遍历子字符串