此代码使用Java。它允许我输入第一个输入正常,但在输入第二个输入后,它会继续寻找更多的字符串,其余的代码都没有。理想情况下,代码会发现2个字符串是否为字谜,但由于这个烦人的问题,我无法对此进行测试。
import java.util.*;
public class Anagram
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Please enter a word");
String first = scan.nextLine();
System.out.println("Please enter a second word");
String second = scan.next();
first = first.toLowerCase();
second = second.toLowerCase();
int lengthF = first.length();
int lengthS = first.length();
int x = 0;
int y = 0;
int placeF=0;
int placeS=0;
char g = 97;
int count =0;
if(lengthF != lengthS)
{
System.out.println("The words are not anagrams");
x=1;
}
while(x == y||g<123)
{
x=0;
y=0;
for(int i = 0;i<lengthF;i++)
{
if(first.charAt(i)==g)
{
x++;
}
}
for(int i = 0;i<lengthS;i++)
{
if(second.charAt(i)==g)
{
y++;
}
}
count++;
g++;
}
if(count==23)
System.out.println("Anagram");
else
System.out.println("Not Anagram");
}
}
答案 0 :(得分:1)
我发现你的代码中有三个错误,如果你总是遵循这些编程的一般规则,你可以自己轻松找到它们:
char g=97;
......让它成为:
char g='a';
对于程序中的每个“特殊”号码也是如此:97,123和23(这样你就会看到 23 错误)。
for
,其初始值,正在进行的条件和增量操作。正在进行的条件必须是索引间隔条件,加上由AND
运算符组合的可选辅助条件。第三个错误......好吧,现在我想不出任何一般规则来避免它。它必须是复制粘贴问题:变量lengthS
被错误地初始化。
另外,我建议您不要多次编写相同的算法:将其输出到单个函数并重用它。因此,您可以使用循环来计算某个字符串中某个char的出现次数。您可以这样定义:
private static int countOccurrencesOfChar(String s, char c) {...}