Vector.Value无法访问由于其保护级别

问题描述 投票:0回答:1

我用苏打箱项目的工作和面临的一些困难。我收到以下错误,当我调试我的代码:

Dryck.namn是无法访问由于其保护级别

就在这儿

(drycker[i].namn == key)

和这里

if (drycker[j].namn.Length > drycker[j + 1].namn.Length)

任何想法如何解决它。提前致谢。我的代码:

namespace edv
    {
        class Program
        {
            public static void Main(string[] args)
            {

                Sodacrate backen = new Sodacrate();//Skapar ett objekt av klassen Sodacrate som heter backen
                backen.Run();//Anroper metoden Run
                backen.Add_soda();//Anropar metoden add_soda
                backen.Print_crate();//Anropar metoden print_crate
                Console.Write("Tryck på valfri tangent för att avsluta. . . ");
                Console.ReadKey(true);
            }
        }

        class Sodacrate
        {
            Dryck[] drycker; //förbereder c# att vi ska skapa en vektor av typen Dryck

            private int antal_flaskor = 0; //Håller reda på alla flaskor //Antal fack

            public Sodacrate()//Konstruktor
            {
                drycker = new Dryck[24];//Här skapas vektorn med antal positioner  
            }

            public void Run()//Metoden där menyn finns med olika möjligheter i programmet
            {
                int tal = 0;


                do
                {
                    Console.WriteLine("Hej och välkommen, här finns olika möjligheter för dryckesbacken!");
                    Console.WriteLine(" ");


                    //Nedanför finns valmenyn som är kopplat till switch-satsen.
                    Console.WriteLine("1 Placera drycker i dryckesbacken");
                    Console.WriteLine("2 Titta vad som finns i backen");
                    Console.WriteLine("3 Beräkna det totala värdet av innehållet i backen");
                    Console.WriteLine("4 Sök en viss dryck i backen");
                    Console.WriteLine("5 Sortera dryckerna ");
                    Console.WriteLine("0 Avsluta programmet");
                    Console.WriteLine(" ");
                    Console.WriteLine("Välj en möjlighet genom att trycka på motsvarande siffrans tangent:");

                    tal = int.Parse(Console.ReadLine());
                    switch (tal)//Efter att användaren matat in vart i menyn han vill gå så dirigerar switch-satsen till den valda metoden.
                    {
                        case 1:
                            Add_soda();
                            break;
                        case 2:
                            Print_crate();
                            break;
                        case 3:
                            Console.WriteLine("");
                            Console.WriteLine("Det totala värdet av dryckerna i backen är {0} kronor.", Calc_pris());
                            Console.WriteLine("   ");
                            Console.WriteLine("Tryck på enter för att komma tillbaka till valmenyn...");
                            Console.WriteLine("   ");
                            Console.WriteLine("   ");
                            Console.ReadKey();
                            break;
                        case 4:
                            Find_soda();
                            break;
                        case 5:
                            Sort_soda();
                            break;
                        case 0:
                            Console.WriteLine("Programmet avslutas...");
                            break;
                        default:
                            Console.WriteLine("Felaktig inmatning");//används för att fånga upp någon annan inmatning än 1, 2, 3, 4, 5, 0.
                            break;
                    }

                } while (tal != 0);

            }


            public void Add_soda()//Metod för att lägga till drycker i dryckesbacken
            {
                int temp = 0;//Variabel för att ta lagra inmatningen från användaren

                do  //Do-while loop för att iterera så länge användaren inte matar in 0.
                {
                    Console.WriteLine("");
                    Console.WriteLine("Vilken dryck vill du lägga till i backen?: ");
                    Console.WriteLine("     1. CocaCola");
                    Console.WriteLine("     2. SevenUp");
                    Console.WriteLine("     3. Loka");
                    Console.WriteLine("     4. Ramlösa");
                    Console.WriteLine("     5. Redbull");
                    Console.WriteLine("     0. Ingen");
                    Console.WriteLine("      ");

                    if (antal_flaskor <= 23)//If-else sats för att loopa igenom inmatningar, OM backen inte är full så:
                    {
                        temp = int.Parse(Console.ReadLine());//Läser in inmatningen från användaren

                        switch (temp)//Switch case för de olika val i dryckesmenyn
                        {
                            case 1:
                                Console.WriteLine("Du har valt en CocaCola");
                                drycker[antal_flaskor] = new Dryck("CocaCola", 15, "läsk");
                                antal_flaskor++;
                                break;
                            case 2:
                                Console.WriteLine("Du har valt en SevenUp");
                                drycker[antal_flaskor] = new Dryck("SevenUp", 15, "läsk");
                                antal_flaskor++;
                                break;
                            case 3:
                                Console.WriteLine("Du har valt en Loka");
                                drycker[antal_flaskor] = new Dryck("Loka", 14, "kolsyratvatten");
                                antal_flaskor++;
                                break;
                            case 4:
                                Console.WriteLine("Du har valt en Ramlösa");
                                drycker[antal_flaskor] = new Dryck("Ramlösa", 14, "kolsyratvatten");
                                antal_flaskor++;
                                break;
                            case 5:
                                Console.WriteLine("Du har en valt Redbull");
                                drycker[antal_flaskor] = new Dryck("Redbull", 25, "energidryck");
                                antal_flaskor++;
                                break;
                            case 0:
                                Console.WriteLine("Du ville inte lägga till någon dryck i backen...");
                                Console.WriteLine("   ");
                                break;
                            default://Fångar upp felaktig inmatning
                                Console.WriteLine("Felaktig inmatning, mata in en siffra mellan 1-5");
                                break;
                        }
                    }
                    else//ANNARS ifall backen är full händer detta:
                    {
                        Console.WriteLine("Backen är full, du kan inte lägga till flera flaskor!");
                        Console.WriteLine("");
                        break;
                    }

                } while (temp != 0);// Så länge användaren inte matar in 0 händer det som finns i do-while loopen

                Console.WriteLine("   ");
                Console.WriteLine("Tryck på enter för att komma tillbaka till valmenyn...");
                Console.WriteLine("   ");
                Console.WriteLine("   ");
                Console.ReadKey();
            }

            public void Print_crate() //Metod för att skriva ut vilket innehåll backen har
            {
                Console.WriteLine("Dessa drycker finns i backen:");
                Console.WriteLine(" ");

                foreach (var temp in drycker)//Loop för att skriva ut varenda objekt i vektorn
                {
                    if (temp != null)
                        Console.WriteLine(temp);
                    else
                        Console.WriteLine("Tom plats");
                }
                Console.WriteLine("   ");
                Console.WriteLine("Tryck på enter för att komma tillbaka till valmenyn...");
                Console.WriteLine("   ");
                Console.WriteLine("   ");
                Console.ReadKey();
            }

            public int Calc_pris()//Metod som ska räkna ihop värdet av alla drycker i backen
            {
                int pris = 0;

                foreach (Dryck count in drycker)
                {
                    if (count != null) //Fångar upp exception som uppstår vid tom index
                    {
                        pris += count.Get_pris();
                    }
                }
                return pris;
            }

            public void Find_soda()
            {
                Console.WriteLine("");
                Console.WriteLine("Skriv namnet på en dricka för att kolla ifall det finns i backen:");
                Console.WriteLine("");

                string key;
                int searchHits = 0;
                while (true)
                {
                    try
                    {
                        key = Console.ReadLine();
                        break;
                    }
                    catch (FormatException)
                    {
                        Console.WriteLine("Du får skriva in ett giltigt dryckesnamn istället1");
                    }
                    catch (NullReferenceException)
                    {
                        Console.WriteLine("");
                    }
                }


                for (var i = 0; i < antal_flaskor; i++)

                {
                    if (drycker[i].namn == key)
                    {
                        searchHits++;
                        Console.WriteLine(" ");
                        Console.WriteLine("Drycken finns i fack " + i + " " + "i backen.");
                        Console.WriteLine("");

                        //Position i har en dryck med strängen key
                    }

                }
                if (searchHits == 0)
                {
                    Console.WriteLine("Ingan dryck med det namnet kunde hittas. Tryck på valfri tangent för att återgå till menyn.");

                }
                else
                {
                    Console.WriteLine(searchHits + " drycker hittades. Tryck på valfri tangent för att återgå till menyn.");
                }
                Console.ReadKey();

            }

            public void Sort_soda()
            {

                int max = drycker.Length - 1;

                for (int i = 0; i < max; i++)
                {
                    int nrLeft = max - i;

                    for (int j = 0; j < nrLeft; j++)
                    {
                        if (drycker[j].namn.Length > drycker[j + 1].namn.Length)
                        {
                            Dryck temp = drycker[j];
                            drycker[j] = drycker[j + 1];
                            drycker[j + 1] = temp;

                        }
                    }
                }

                for (int i = 0; i < drycker.Length; i++)
                {
                    Console.WriteLine(drycker[i]);
                }
            }

        }

        class Dryck
        {
            string namn;
            int pris;
            string typ;

            public Dryck(string _namn, int _pris, string _typ) //Konstruktor för Dryck
            {
                namn = _namn;
                pris = _pris;
                typ = _typ;
            }

            public int Get_pris()//Metod för att komma åt variabeln pris
            {
                return pris;
            }

            public override string ToString()//standard versionen för hur ett objekt skrivs ut ändras med denna metod
            {
                return string.Format("*   {0}, den kostar {1} kronor och drycken är en {2}", namn, pris, typ);
            }

        }
    }
c#
1个回答
1
投票

您不能访问私有字段,默认为C#类保护级别是私人所以公共字符串NAMM {获得;设置;}您可以使用属性来访问类的领域。

© www.soinside.com 2019 - 2024. All rights reserved.