【问题标题】:turning strings to ints and getting the total value by addition将字符串转换为整数并通过加法获得总值
【发布时间】:2015-02-01 00:09:21
【问题描述】:

我有一个 for 循环,它遍历 UI.text 元素的数组(总共 6 个),并通过将此数字转换为字符串来为每个元素随机分配一个数字。我正在尝试——无论是在他们转换之前还是之后——收集这 6 个数字加在一起时的总值。即 6+1+2+3+4+1 = 17。下面的代码是错误的,因为它在控制台中产生一个“0”——我注意到它在右侧给出了一个总对象值,它总是等于正确的总和,但这似乎没有用。 有没有更简单的方法?

    for(int i = 0; i < blueHex1CardNumbers.Length; i++)
    {
        int j = Random.Range(1, 6);
        string myString = j.ToString();

        blueHex1CardNumbers[i].text = myString;


        int numbers = System.Int32.Parse(blueHex1CardNumbers[i].text);
        int[] total = new int[numbers]; //This is where i think the problem lies
        for(int l = 0; l < total.Length; l++)
        {
            int final = total.Sum ();
            Debug.Log(final);
        }
    }

【问题讨论】:

    标签: c# for-loop unity3d


    【解决方案1】:

    简单地做:

    // Add this up here
    int totals = 0;
    
    for(int i = 0; i < blueHex1CardNumbers.Length; i++)
    {
        int j = Random.Range(1, 6);
        // increment it as you go
        totals += j;
    
        string myString = j.ToString();
        blueHex1CardNumbers[i] = myString;
    }
    
    // use your totals here
    

    【讨论】:

    • 你太棒了,谢谢!!我觉得它应该更简单!
    • 很高兴我能帮上忙。由于您似乎正在学习,这是我能给您的最佳建议。保持简单:)
    【解决方案2】:
    var random = new Random();
    var ints = Enumerable.Repeat(0, blueHex1CardNumbers.Length)
                         .Select(_ => random.Next(1, 6))
                         .ToArray(); // six random ints
    var strings = ints.Select(n => n.ToString());
    var total = ints.Sum();
    var i = 0;
    foreach (var s in strings)
        blueHex1CardNumbers[i++].Text = s;
    

    【讨论】:

      猜你喜欢
      • 2017-06-12
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多