【问题标题】:Not all code return a value for lists并非所有代码都返回列表值
【发布时间】:2015-03-20 19:36:12
【问题描述】:

我不知道错误是什么,我试图从列表中检索值并添加它们,我不知道代码中发生了什么,错误发生在 ReturnAttacks 和 AttackLoop。

public class test{
    public static List<int> attacks = new List<int>();
    public static void AddAttack(int attack){
        attacks.Add (attack);

    }

    public static int ReturnAttacks(){
        int numofattacks = attacks.Count;
        int returnval = 10;
        if (numofattacks > 5) {
            return returnval;
        }
        AttackLoop();
    }
    public static int AttackLoop(){
        foreach (int attack in attacks) {
            return attack;
        }
    }

    public static void Main()
    {
        AddAttack(1);
        AddAttack(2);
        AddAttack(3);
        AddAttack(4);
        AddAttack(5);
        AddAttack(6);
        int selection = ReturnAttacks();

    }

}

【问题讨论】:

  • 如果attacks中没有攻击,那么AttackLoop返回什么?提示:它没有。修复它。 ReturnAttacks 也一样。
  • 如果int 在您的AttackLoop 方法中,您是否尝试返回IEnumerable?
  • 请说明您的预期结果值是多少。
  • 您的一个问题是如果numofattacks ReturnAttacks() 中返回任何内容,另一个是如果attacks 是,AttackLoop 不会返回任何内容空
  • 还有@RichardDing你能解释一下为什么你在foreach循环中调用/试图返回数据..也许你应该看看或重构你使用的代码break;你也能更好地解释一下程序应该这样做..您似乎多次调用相同的方法传递 int 值..也许您可以有一个迭代和调用 ReturnAttacks 的方法调用在 for 循环等中使用单个方法调用...

标签: c# class object int


【解决方案1】:

在AttackLoops()函数中,函数在循环的第一次迭代中返回attack的值,就是这样。尝试在循环外返回值,或者使用生成器函数。 希望这会有所帮助。

【讨论】:

    【解决方案2】:

    “我正在尝试从列表中检索值并添加它们”

    在这种情况下,

     List<int> Attacks  = new List<int>();
    
            Attacks.Add(1);
            Attacks.Add(2);
            Attacks.Add(3);
            Attacks.Add(4);
            Attacks.Add(5);
            Attacks.Add(6);
    
            int SumOfInts = 0;
            foreach (int i in Attacks)
                SumOfInts += i;
    
            Console.WriteLine("Sum of Attacks {0}", SumOfInts);
    
            Console.Read();
    

    除非问题需要你编写一个带有列表的类和函数来将项目添加到列表中,检索和汇总列表中的项目。

    public class test{
        public static List<int> attacks = new List<int>();
    
        public static void AddAttack(int attack){
            attacks.Add (attack);
        }
    
        public static int ReturnAttacks(){
            int sumOfAttacks = 0;
            foreach(int attack in attacks)
                sumOfAttacks += attack;
    
            return sumofAttacks;  
        }
    
        public static void Main()
        {
            AddAttack(1);
            AddAttack(2);
            AddAttack(3);
            AddAttack(4);
            AddAttack(5);
            AddAttack(6);
    
            int selection = ReturnAttacks();
    
            Console.WriteLine(selection);
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 2013-10-06
      • 2016-02-14
      • 2014-04-02
      相关资源
      最近更新 更多