【问题标题】:Trying to count specific char in 2D array, but entire array is counted instead尝试计算二维数组中的特定字符,但计算整个数组
【发布时间】:2016-05-06 18:31:40
【问题描述】:

我正在尝试计算特定字符在二维数组中出现的次数。问题是它正在计算数组中的所有字符。我不知道为什么。

            int P = 0;
            int p = 0;
            int R = 0;
            int r = 0;
            int N = 0;
            int n = 0;
            int B = 0;
            int b = 0;
            int Q = 0;
            int q = 0;

             for (int x = 0; x < BOARD_SIZE + 1; x++) // This side is 9
            {

                for (int y = 0; y < BOARD_SIZE; y++) // This side is 8
                {

                    char temp = ' '; // Tried using temp as pass through, but no difference
                    temp = chessBoards[x][y];
                    // cout << temp; // When this is on it prints each element of the array list in order with a number beside it

                    if (temp = 'P') // This is just one character I am trying to count
                    {
                        ++P; // It increments for every character so it's not checked properly
                    }

                }

            }

             cout << P << endl << endl; // This is what I am using to test output

【问题讨论】:

  • 确实知道相等比较和赋值比较之间的区别吗?也许您需要为编译器打开更多警告,因为它会检测到问题并警告您。
  • 哈哈!我不敢相信我错过了!这是一个漫长的夜晚。这就是我必须解决的所有问题。我想这只是我花了太长时间寻找错误问题而忽略了简单问题的事情之一。我正在为此使用 Visual Studio Pro,它最近一直在窃听并需要重新启动。例如,有时它会在没有问题需要重新启动的情况下给出错误。让事情变得更加困难。

标签: c++ arrays multidimensional-array char cout


【解决方案1】:

这只是一个错字..

if (temp = 'P')

您使用的是赋值运算符而不是比较。

【讨论】:

  • 是的,谢谢。哈哈。那解决了它。我仍然不敢相信我忽略了这么简单的事情。好吧,希望这个问题对其他人仍然有用,因为它既是计数所有字符又计数一个字符的示例。
【解决方案2】:

if (temp = 'P') 更改为if (temp == 'P')

【讨论】:

    【解决方案3】:

    要测试是否相等,请使用 == 而不是 =(代表赋值)。 “if (temp = 'P')”这一行意味着您将 'P' 分配给 temp,然后测试 temp 是否不同于 0(空字符),当然是('P' is different from 0 !)。 编写测试的正确方法是:

    if (temp == 'P')
    

    另外,为什么第一个 for 循环中的限制与第二个 for 循环中的限制不同?你确定吗?

    最后,为什么要用x和y来命名整数类型的变量,用i和j代替不是更好吗?

    【讨论】:

    • 值不同的原因是因为我在板之间存储新行并将其用作检查要计算多少板的度量,但它仍然是一个 8x8 板所以我只去8个空间宽。我已经设置它来检查和删除板位置之间的空白,所以那里没有问题,是的,在纠正错字之后一切正常。
    猜你喜欢
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 2019-12-11
    • 2012-07-18
    • 1970-01-01
    相关资源
    最近更新 更多