为什么我的程序一直在寻找输入?

时间:2015-11-07 18:51:26

标签: java

此代码使用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");
    }
}

1 个答案:

答案 0 :(得分:1)

我发现你的代码中有三个错误,如果你总是遵循这些编程的一般规则,你可以自己轻松找到它们:

  1. 绝对不要使用数字。以一种解释该值来自何处的方式编写它们:而不是:
  2. char g=97;

    ......让它成为:

    char g='a';
    

    对于程序中的每个“特殊”号码也是如此:97,123和23(这样你就会看到 23 错误)。

    1. 索引循环应始终为for,其初始值,正在进行的条件和增量操作。正在进行的条件必须是索引间隔条件,加上由AND运算符组合的可选辅助条件。
    2. 第三个错误......好吧,现在我想不出任何一般规则来避免它。它必须是复制粘贴问题:变量lengthS被错误地初始化。

      另外,我建议您不要多次编写相同的算法:将其输出到单个函数并重用它。因此,您可以使用循环来计算某个字符串中某个char的出现次数。您可以这样定义:

      private static int countOccurrencesOfChar(String s, char c) {...}