जब भी मैं प्रोग्राम चलाता हूं और 7 का चयन करता हूं तो यह पूछता है कि आप कितने पसंद करेंगे जो वास्तव में भ्रमित करने वाला है, साथ ही मुझे यकीन नहीं है कि मैं कुल आइटम सही तरीके से जोड़ रहा हूं। किसी भी प्रकार की सहायता सराहनीय होगी।

namespace GoingShopping
{
    class Program
    {
        private static int cabbageamount;
        private static int tomatoamount;
        private static int cheeseamount;
        private static int breadamount;
        private static int milkamount;
        private static int onionamount;
        bool isvalid = true;

        static void Main(string[] args)
        {
            String cabbage = "1";
            String tomatos = "2";
            String Cheese = "3";
            String bread = "4";
            String milk = "5";
            String onion = "6";
            String done = "7";
            String menu = "1) Cabbage" + System.Environment.NewLine + 
                          "2) Tomatos" + System.Environment.NewLine + 
                          "3) Cheese" + System.Environment.NewLine + 
                          "4) Bread" + System.Environment.NewLine + 
                          "5) Milk" + System.Environment.NewLine + 
                          "6) Onion" + System.Environment.NewLine + 
                          "7) I'm done shopping";

            int total = cabbageamount + tomatoamount + cheeseamount + breadamount + milkamount + onionamount;

            Console.Write("What you like to purchase ? " + System.Environment.NewLine);
            Console.WriteLine(menu);
            string wishlist = Console.ReadLine();


            while (wishlist != "7")
            {
                switch (wishlist)
                {
                    case "1":
                        Console.WriteLine("How many would you like ? ");
                        string cabbageinput = Console.ReadLine();
                        //int cabbageinput = Convert.ToInt32(Console.ReadLine());
                        Console.WriteLine(menu);
                        break;
                    case "2":
                        Console.WriteLine("How many would you like ? ");
                        string tomatoinput = Console.ReadLine();
                        Console.WriteLine(menu);

                        break;
                    case "3":
                        Console.WriteLine("How many would you like ? ");
                        string cheeseinput = Console.ReadLine();
                        Console.WriteLine(menu);

                        break;
                    case "4":
                        Console.WriteLine("How many would you like ? ");
                        string breadinput = Console.ReadLine();
                        Console.WriteLine(menu);

                        break;
                    case "5":
                        Console.WriteLine("How many would you like ? ");
                        string milkinput = Console.ReadLine();
                        Console.WriteLine(menu);

                        break;
                    case "6":
                        Console.WriteLine("How many would you like ? ");
                        string onioninput = Console.ReadLine();
                        Console.WriteLine(menu);

                        break;
                    case "7":
                        Console.WriteLine("You have chosen to buy : " + System.Environment.NewLine);
                        Console.WriteLine(cabbageamount + "X" + "Cabbages" + System.Environment.NewLine,
                                          tomatoamount + "X" + "Tomatos" + System.Environment.NewLine,
                                          cheeseamount + "X" + "Cheese" + System.Environment.NewLine,
                                          breadamount + "X" + "Bread" + System.Environment.NewLine,
                                          milkamount + "X" + "Milk" + System.Environment.NewLine,
                                          onionamount + "X" + "Onions" + System.Environment.NewLine);
                        Console.WriteLine("Giving a total of" + total + "items");
                        break;
                    default:    
                        break;
                }
                Console.ReadLine();
            }

        }
    }
}
0
Curstin Visagie d0ublecl1ckmee 4 फरवरी 2017, 13:11
आप उससे क्या करने की अपेक्षा करते हैं?
 – 
Novice
4 फरवरी 2017, 13:16
कोशिश करें: स्ट्रिंग विशलिस्ट = कंसोल। रीडलाइन ()। ट्रिम ();
 – 
jdweng
4 फरवरी 2017, 13:17
सबसे पहले आपकी case "7": while(wishlist != "7") की वजह से कभी बिट हिट नहीं होगी
 – 
Mateusz
4 फरवरी 2017, 13:20
@ m.rogalski मुझे लगता है कि इसका इरादा है, इसलिए यदि आप पहली बार 7 हिट करते हैं तो यह इसे छोड़ देता है।
 – 
Daniel James Bryars
4 फरवरी 2017, 13:24
@ m.rogalski स्क्रैच करें कि, आप सही कह रहे हैं। भले ही इच्छा सूची सेट हो, वह समय से बाहर हो जाएगी!
 – 
Daniel James Bryars
4 फरवरी 2017, 13:27

4 जवाब

जैसा कि ऊपर डैनियल ने कहा था कि आपको फिर से इच्छा सूची चर सेट करने की आवश्यकता है

तो इसके बजाय

Console.ReadLine();

रखना

wishlist = Console.ReadLine();

जबकि लूप के अंत में।

0
Novice 4 फरवरी 2017, 13:29

आपने फिर कभी विशलिस्ट सेट नहीं की, आपका अंतिम "Console.ReadLine ()" परिणाम को फेंक देता है, इसलिए विशलिस्ट हमेशा एक ही मान होती है।

हालाँकि, जैसा कि @Steve बताते हैं, आप पूरी तरह से एक अलग दृष्टिकोण अपनाने से बेहतर होंगे।

एक सामान्य संकेत के रूप में, आपको डिबगर का उपयोग "देखने" के लिए करना चाहिए कि प्रोग्राम निष्पादित होने पर मान क्या हैं - फिर आप देखेंगे कि इच्छा सूची समान मान है।

0
Daniel James Bryars 4 फरवरी 2017, 13:36

आपको अपने द्वारा पढ़े गए मान पर wishlist सेट करना होगा। साथ ही, आपको अपने switch से पहले यह करना होगा:

namespace GoingShopping
{
    class Program
    {
        private static int cabbageamount;
        private static int tomatoamount;
        private static int cheeseamount;
        private static int breadamount;
        private static int milkamount;
        private static int onionamount;
        bool isvalid = true;

        static void Main(string[] args)
        {
            String cabbage = "1";
            String tomatos = "2";
            String Cheese = "3";
            String bread = "4";
            String milk = "5";
            String onion = "6";
            String done = "7";
            String menu = "1) Cabbage" + System.Environment.NewLine + 
                          "2) Tomatos" + System.Environment.NewLine + 
                          "3) Cheese" + System.Environment.NewLine + 
                          "4) Bread" + System.Environment.NewLine + 
                          "5) Milk" + System.Environment.NewLine + 
                          "6) Onion" + System.Environment.NewLine + 
                          "7) I'm done shopping";

            int total = cabbageamount + tomatoamount + cheeseamount + breadamount + milkamount + onionamount;

            Console.Write("What you like to purchase ? " + System.Environment.NewLine);
            Console.WriteLine(menu);
            string wishlist = "0";


            while (wishlist != "7")
            {
                wishlist = Console.ReadLine().Trim();
                switch (wishlist)
                {
                    case "1":
                        Console.WriteLine("How many would you like ? ");
                        string cabbageinput = Console.ReadLine();
                        //int cabbageinput = Convert.ToInt32(Console.ReadLine());
                        Console.WriteLine(menu);
                        break;
                    case "2":
                        Console.WriteLine("How many would you like ? ");
                        string tomatoinput = Console.ReadLine();
                        Console.WriteLine(menu);

                        break;
                    case "3":
                        Console.WriteLine("How many would you like ? ");
                        string cheeseinput = Console.ReadLine();
                        Console.WriteLine(menu);

                        break;
                    case "4":
                        Console.WriteLine("How many would you like ? ");
                        string breadinput = Console.ReadLine();
                        Console.WriteLine(menu);

                        break;
                    case "5":
                        Console.WriteLine("How many would you like ? ");
                        string milkinput = Console.ReadLine();
                        Console.WriteLine(menu);

                        break;
                    case "6":
                        Console.WriteLine("How many would you like ? ");
                        string onioninput = Console.ReadLine();
                        Console.WriteLine(menu);

                        break;
                    case "7":
                        Console.WriteLine("You have chosen to buy : " + System.Environment.NewLine);
                        Console.WriteLine(cabbageamount + "X" + "Cabbages" + System.Environment.NewLine,
                                          tomatoamount + "X" + "Tomatos" + System.Environment.NewLine,
                                          cheeseamount + "X" + "Cheese" + System.Environment.NewLine,
                                          breadamount + "X" + "Bread" + System.Environment.NewLine,
                                          milkamount + "X" + "Milk" + System.Environment.NewLine,
                                          onionamount + "X" + "Onions" + System.Environment.NewLine);
                        Console.WriteLine("Giving a total of" + total + "items");
                        break;
                    default:    
                        break;
                }
            }

        }
    }
}
0
Lajos Arpad 4 फरवरी 2017, 13:41

स्विच स्टेटमेंट के लिए आपका पूरा तर्क गलत है। आपको अपने स्विच स्टेटमेंट के अंदर string का उपयोग नहीं करना चाहिए। मैं आपको इन्हें char में बदलने का सुझाव दूंगा:

char charcabbage = '1'; // or 0x31
char tomatos     = '2'; // or 0x32
char Cheese      = '3'; // or 0x33
char bread       = '4'; // or 0x34
char milk        = '5'; // or 0x35
char onion       = '6'; // or 0x36
char done        = '7'; // or 0x37

फिर आपको उपयोगकर्ता इनपुट को संभालने के लिए कुछ InputHandler बनाना चाहिए और फिर अपना "कार्रवाई" वापस करना चाहिए:

char ChooseAction(string message)
{
    Console.WriteLine(message);
    string input = string.Empty;
    while ( (input = Console.ReadLine()) != "exit") 
    {
        char c = input.Trim()[0];
        if ( c >= 0x31 && c <= 0x37)
            return c;

        Console.WriteLine("Wrong input. Try again...");
    } 
    return 0x38;       
}

अब यह विधि "निकास" की प्रतीक्षा कर रही है यदि आप इसे या कुछ बंद करना चाहते हैं या वैध इनपुट "1" - "7" के लिए।

और जैसा कि आप अब देख सकते हैं कि उपयोगकर्ता 0x31 से 0x37 तक मान इनपुट कर सकता है और आपके switch स्टेटमेंट में आप एक ही कोड को 6 बार चला रहे हैं ... परिवर्तन

//private static int cabbageamount;
//private static int tomatoamount;
//private static int cheeseamount;
//private static int breadamount;
//private static int milkamount;
//private static int onionamount;

// to this :
private static System.Collections.Generic.Dictionary<char, int> _items;

और अपने लूप के शुरू होने से पहले इसे इनिशियलाइज़ करें:

_items = new System.Collections.Generic.Dictionary<char, int>();
for(char i = '0'; i < '7'; i++) {
    _items.Add(i, 0);
}

अपने "प्री-लूप" कथनों पर आगे बढ़ते हुए अब आप कुछ ऐसा कर सकते हैं:

char action = ChooseAction("What you like to purchase ? " + System.Environment.NewLine + menu);

और फिर अपने लूप के साथ आगे बढ़ें:

while (action >= 0x31 && action <= 0x37)

फिर बस अपना switch स्टेटमेंट इस फॉर्मेट में डालें:

case '7':
    {
        Console.WriteLine("You have chosen to buy : " + System.Environment.NewLine);
        Console.WriteLine(_items[0x31] + "X" + "Cabbages" + System.Environment.NewLine,
                          _items[0x32] + "X" + "Tomatos" + System.Environment.NewLine,
                          _items[0x33] + "X" + "Cheese" + System.Environment.NewLine,
                          _items[0x34] + "X" + "Bread" + System.Environment.NewLine,
                          _items[0x35] + "X" + "Milk" + System.Environment.NewLine,
                          _items[0x36] + "X" + "Onions" + System.Environment.NewLine);
                    Console.WriteLine("Giving a total of" + total + "items");
        // set list to completed:
        action = 0x38;
    }
    break;

default :
    {
        Console.WriteLine("How many would you like ? ");
        string input = Console.ReadLine();
        int temp = 0;
        if(int.TryParse(input, out temp)) {
            _items[action] += temp;
        }
        action = ChooseAction(menu);
    }

अब आपकी सारी समस्याएं दूर हो जानी चाहिए :)

0
Mateusz 4 फरवरी 2017, 13:45