【问题标题】:can someone help me clear these errors有人可以帮我清除这些错误吗
【发布时间】:2016-04-07 04:44:34
【问题描述】:

我正在尝试做一个求和难题,问题要求通过枚举和测试所有可能的配置来使用求和难题,然后它说使用它来解决给出的示例。给出的例子是

锅+锅=围兜

狗+猫=猪

男孩 + 女孩 = 婴儿

我不断收到错误提示,赋值左侧必须是变量

charSet.charAt(setIndex++) = stringTwo.charAt(loop);

无法从 int 转换为 bool。

如果(存在 = 0)

也在我的代码中,我尝试显示它不运行的输出。

import java.util.Scanner;
public class Recursion
{
    // Example program


    public static String stringOne = new String(new char[10]);
    public static String stringTwo = new String(new char[10]);
    public static String stringThree = new String(new char[11]);
    public static String charSet = new String(new char[11]);
    public static int numberOne;
    public static int numberTwo;
    public static int numberThree;

    public static int maxCharCount;

    public static int[] numberSet = new int[10];

    public static void checkForEquality()
    {

    numberOne = numberTwo = numberThree = 0;
    int loop;
    int subloop;


        for (loop = 0; loop < stringOne.length(); loop++)

        {
            for (subloop = 0; subloop < maxCharCount; subloop++)

            {
            if (stringOne.charAt(loop) == charSet.charAt(subloop))

            {
            if (loop == 0 && numberSet[subloop] == 0)

        return;

        //generate the number   

        numberOne = (numberOne * 10) + numberSet[subloop];
            }
            }

        }
        for (loop = 0; loop < stringOne.length(); loop++)

        {
            for (subloop = 0; subloop < stringTwo.length(); subloop++)

            {
            if (stringTwo.charAt(loop) == charSet.charAt(subloop))

            {
            if (loop == 0 && numberSet[subloop] == 0)

        return;

        //generate the numeber  

        numberTwo = (numberTwo * 10) + numberSet[subloop];
            }
            }
        }


        for (loop = 0; loop < stringThree.length(); loop++)

        {
            for (subloop = 0; subloop < maxCharCount; subloop++)

            {
            if (stringThree.charAt(loop) == charSet.charAt(subloop))

            {
                if (loop == 0 && numberSet[subloop] == 0)

        return;

        //generate the number   

        numberThree = (numberThree * 10) + numberSet[subloop];
            }
            }
        }

        if (numberOne + numberTwo == numberThree)
        {
        //display the output 

        System.out.print("  Summation Puzzle solved.    ");

        System.out.print("\n");
        System.out.print(stringOne);
        System.out.print("<==>");
        System.out.print(numberOne);
        System.out.print("\n");
        System.out.print(stringTwo);
        System.out.print("<==>");
        System.out.print(numberTwo);
        System.out.print("\n");
        System.out.print(stringThree);
        System.out.print("<==>");
        System.out.print(numberThree);
        System.out.print("\n");

    //loop to show the result

    for (loop = 0; loop < maxCharCount; loop++)
    {
        System.out.print(charSet.charAt(loop));
        System.out.print("<==>");
        System.out.print(numberSet[loop]);
        System.out.print("\n");
    }

    System.exit(0);

        }
    }


        public static void generateCombinations(int indexCounter, int[] availableSet)

        {
            int loop;
            if (indexCounter != 0)
            {

        for (loop = 0; loop < 10; loop++)
        {

        numberSet[indexCounter] = loop;

        if (availableSet[loop] == 1)
        {

        availableSet[loop] = 0;

        generateCombinations(indexCounter + 1, availableSet);

        availableSet[loop] = 1;
        }
        }
            }

        if (indexCounter == maxCharCount)

        {
    checkForEquality();
        }

        }

        public static void createCharSet()
        {

        int loop;
        int setIndex; 
        int exists;
        int subloop;

        setIndex = 0;

        for (loop = 0; loop < stringOne.length(); loop++)
        {
            exists = 0;

        for (subloop = 0; subloop < setIndex; subloop++)

        {

        if (stringOne.charAt(loop) == charSet.charAt(subloop))
        {
        exists = 1;
        }

        }
        if (exists == 0)

        {
            charSet = StringFunctions.changeCharacter(charSet, setIndex++, stringOne.charAt(loop));
        }
        }

            for (loop = 0; loop < stringTwo.length(); loop++)
            {
        exists = 0;

        for (subloop = 0; subloop < setIndex; subloop++)

        {

        if (stringTwo.charAt(loop) == charSet.charAt(subloop))

        {
        exists = 1;
        }

        }

        if (exists == 0)
        {

             charSet = StringFunctions.changeCharacter(charSet, setIndex++, stringTwo.charAt(loop));

        }
            }

        for (loop = 0; loop < stringThree.length(); loop++)

        {
            exists = 0;

        for (subloop = 0; subloop < setIndex; subloop++)

        {

            if (stringThree.charAt(loop) == charSet.charAt(subloop))
            {
        exists = 1;
            }
        }

            if (exists == 0)
            {


            charSet = StringFunctions.changeCharacter(charSet, setIndex++, stringThree.charAt(loop));
            }
        }

            maxCharCount = setIndex;
        }

            public static void calculateSummation()

            {
            int loop;

        if (maxCharCount > 10)

        {

        System.out.print("Please check the input again");

        return;
        }
            else

            {

            int[] avaliableSet = new int[10];

        for (loop = 0; loop < 10; loop++)
        {

            avaliableSet[loop] = 1;
        }

            generateCombinations(0, avaliableSet);
            }
            }

     public static void main(String[]args)
            {
                Scanner scan = new Scanner(System.in);

            System.out.print(" Enter the first String :");
            stringOne = scan.next();


            System.out.print("  Enter the second String :");
            stringTwo = scan.next();

            System.out.print("  Enter the thirsd String :");
            stringThree = scan.next();

        createCharSet();



        System.out.print("  The character set formed from the given string = ");
        System.out.print(charSet);

        calculateSummation();
        checkForEquality();
            }
}

【问题讨论】:

  • 我没有看到您在帖子中提到任何错误
  • 第 1 步:阅读错误信息。
  • 第 2 步:正确缩进代码。
  • Stack Overflow 的目的是成为描述特定编程问题及其潜在解决方案的问题的可搜索存储库。如果您的问题没有以允许其他人找到它(并重现它)的方式描述问题,那么它不属于 Stack Overflow。所以请edit您的问题并更详细地描述您的问题。如果您有错误/异常,请包括其完整的消息/堆栈跟踪。如果您得到错误的结果,请描述您所期望的结果(也许还可以解释为什么您期望得到这样的结果),以及您得到的结果。
  • 第三步:不要写意大利面条式的代码。

标签: java data-structures


【解决方案1】:

您的许多问题都源于您编写的代码中的语法错误。例如:

  1. line 74: if (stringThree.charAt(loop) == charSet.charAt(subloop) != null)

    • charSet.charAt(subloop) != null 是无效的比较,因为在与 null 比较时,!= 运算符不能用于布尔值。如果您尝试确定从 .charAt(var) 返回的字符是否存在,请使用括号将每个 object.charAt(var) 与 null 进行独立比较。
  2. line 183: charSet = tangible.StringFunctions.changeCharacter(charSet, setIndex++, stringOne.charAt(loop));

    • 具有讽刺意味的是,tangible 是无形的,因为该变量在本地不存在或未在全局范围内定义。
  3. charSet.charAt(setIndex++) = stringTwo.charAt(loop);

    • charSet.charAt(setIndex++) 是一种返回字符的方法。这并不意味着您可以将指定索引处的字符设置为变量。
  4. line 227: if (exists = 0)

    • 在条件中进行比较时必须使用==
  5. line 269: Scanner scan = new Scanner(System.in);

    • Scanner 类未导入,因此无法使用。
  6. line 283: charSet.charAt(maxCharCount) = '\0';

    • 同样,您不能使用 .charAt(var) 来设置该索引处的字符,就像它是一个变量一样。

所有这些问题都可以通过使用适当的 IDE 自行解决,例如 Eclipse

编辑:在编写代码来表示您的算法之前,尝试多花一点时间用铅笔和纸弄清楚程序的逻辑。这样你就可以专注并且可以编写更全面、注释更清晰的代码。 Here 是一个帮助压缩现有项目的指南。

【讨论】:

  • IntelliJ IDEA,它提供了一个非常不错的免费社区版。
  • @dnault “你为什么不使用 Eclipse?它是 唯一的 IDE 很好。”
  • 谁能运行这段代码并告诉我为什么我的显示输出不工作?
  • @ZainQurashi 安装 IDE 并在运行时跟踪堆栈跟踪。它会准确地告诉您是哪条线路给您带来了问题。
  • 不,我不再有编译问题了。我只是不确定为什么我的显示方法不起作用。 @Zulfe
猜你喜欢
  • 2016-07-09
  • 1970-01-01
  • 2019-09-23
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 2022-10-23
相关资源
最近更新 更多