繁体   English   中英

在Int Array C#中更改给定索引处的值

Change value at given index in Int Array C#

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试创建一个过程来计算给定输入字符串中每个字母的频率。 到目前为止,除了在int数组中给定索引处更新int的值之外,我到目前为止的代码似乎工作正常。 当我调试代码时,它成功地找到了与当下字符相对应的字符串数组的索引,因此看来问题出在以下一行: alphabetCount[index] = alphabetCount[index]++;

这是代码。

    string[] alphabet = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
    int[] alphabetCount = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
    string baseInput = string.Empty;

    private void button_count1_Click(object sender, EventArgs e)
    {
        baseInput = textBox_base.Text.ToUpper();
        int length = baseInput.Length;

        for (int i = 0; i < length; i++)
        {
            try
            {
                int index = Array.IndexOf(alphabet,baseInput[i].ToString());
                alphabetCount[index] = alphabetCount[index]++;
            }
            catch
            {
                //MessageBox.Show("nope");
            }
        }
    }
3 个回复

您可以简化计数器。

int[] alphabetCount =
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
string baseInput = string.Empty;

private void button_count1_Click(object sender, EventArgs e)
{
    baseInput = textBox_base.Text.ToUpper();

    foreach(var character in baseInput)
    {
        if(char.IsLetter(baseInput))
        {
            // A is ASCII 65, Z is ASCII 90
            // Subtract 65 to put it in the alphabetCount range
            var index = character - 65;
            alphabetCount[index]++;
        }
    }
}

问题是alphabetCount[index]++计数alphabetCount[index]++首先分配了alphabetCount[index]计数alphabetCount[index] ,然后递增该值。 您需要使用预增量运算符:

alphabetCount[index] = ++alphabetCount[index];

您可以简单地重现此行为,如下所示:

var arr = new int[2];
arr[0] = arr[0]++;

Console.Write(arr[0]); // 0

您只需要编写alphabetCount[index]++; alphabetCount[index] = alphabetCount[index]+1; (当量)

或者您使用linq:

string words = "Hello World";
Dictionary<char, int> counted = words.ToUpper().GroupBy(ch => ch).OrderBy(g => g.Key).ToDictionary(g => g.Key, g => g.Count());
1 在C#中的索引处获取整数数组的值

我想在索引处获取整数数组的值。 GetValue方法拒绝int类型。 我究竟做错了什么? Ind是一个整数,locX的声明方式如下: public int[] locX; 我知道我做错了什么。 很抱歉这个问题,我对C#有点陌生。 ...

2009-11-08 04:20:19 2 79   c#
4 Haskell:更改ByteString中给定索引处的元素

我正在尝试ByteString s组成的矩阵中的索引x和y处的字符更改为其他字符。 起初,我用[[Char]]代表矩阵,所以我能够使用.~从Control.Lens.Setter更改值,但是这似乎并没有对工作[ByteString] 。 有没有什么方法可以像我现在正在使用的那样,在不un ...

7 在给定的轴索引处替换nd numpy数组中的值

我想用给定值(例如0 )沿给定轴(例如-2 )沿给定索引(例如0 )在给定numpy数组( A )中的值替换为给定值(例如0 ): 问题是输入数组A可能以3D或4D或其他形状出现,因此对于3D数据,我需要 如果是5D: A[:,:,:,0,:]=0 目前,我正在使用exec ...

8 索引0处的数组值在C中的循环结束时更改

这个问题已经在这里有了答案: 为什么这个C程序给出运行时错误[关闭] 4个答案 下面是我的C代码。 我不知道为什么数组的最小值(以及meds和maxs)在索引0处的值在循环的最后一次迭代中发生变化。 请帮忙。 抱歉,添加了太多打印语句。 这些主要用于调试 ...

2016-06-09 15:39:08 1 65   c/ arrays
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM