回 帖 发 新 帖 刷新版面

主题:这段代码为什么不能这样写?

最外面的IF为什么不能写else呢?写了程序也不执行?真的郁闷! 
public void buyFilm(string filmname)//string filmname
        {
            Dictionary<string, Film> inventory = new Dictionary<string, Film>();
            foreach (string s in inventory.Keys)
            {
                if (s==filmname)
                {
                   if (inventory[s].Amount > 0)
                    {
                        inventory[s].Amount--;
                        break;
                    }
                    else
                    {
                        string ss = string.Format("《{0}》现在没货", filmname);
                        Console.WriteLine(ss);
                        break;
                    }
                }
              [color=FF00FF]  else
                {
                    string sr = string.Format("本店没有《{0}》", filmname);
                    Console.WriteLine(sr);
                    break;
                }[/color]            }
            writeFilms();
        }

回复列表 (共4个回复)

沙发

改成这样也不行
public void buyFilm(string filmname)//string filmname
        {
            Dictionary<string, Film> inventory = new Dictionary<string, Film>();
            foreach (string s in inventory.Keys)
            {
                if (s==filmname)
                {
                   if (inventory[s].Amount > 0)
                    {
                        inventory[s].Amount--;
                        break;
                    }
                    else if
                    {
                        string ss = string.Format("《{0}》现在没货", filmname);
                        Console.WriteLine(ss);
                        break;
                    }
                }
                else
                {
                    string sr = string.Format("本店没有《{0}》", filmname);
                    Console.WriteLine(sr);
                    break;
                }            }
            writeFilms();
        }

板凳

我想你的思路不大对吧,应该是遍历之后也就是foreach之后再判断,如果没有找到再输出没这个商品,而不是遍历过程中

3 楼

楼上说的是,你的红色代码段在foreach的每一次循环里都执行,那么就意味着第一次循环执行完了一定会退出,此后的循环一定不会做了。

4 楼


谢谢两位大侠!一定回去面壁思过

我来回复

您尚未登录,请登录后再回复。点此登录或注册