为什么我的向量被重置而不是拥有自己的值?

乔纳坦·约翰逊

我现在正在学习编程,我需要做一辆“公共汽车”。我有一个带有 25 个点的向量,用户将用乘客填充这些点。我有一个 switch-case 菜单,所以你可以选择是添加乘客还是获取完整的乘客列表等等。当我输入了大约 5 名乘客并希望获得乘客名单时,公交车上的每个人都变为 0,而不是我输入的年龄。我不知道怎么了?

代码中的注释是瑞典语。

{
    class Buss
    {
        public int[] passagerare;
        public int antal_passagerare ;


        public void Run()
        {
            Console.WriteLine("Welcome to the awesome Buss-simulator");

            do
            {
                Console.WriteLine("Välj alternativ");
                Console.WriteLine("1: Lägg till passagerare");
                Console.WriteLine("2: Skriv ut listan över passagerare");
                Console.WriteLine("3: Skriv ut total åldern över passagerna");
                Console.WriteLine("4: Skriv ut medelåldern över passagerarna");
                Console.WriteLine("0: Avsluta programmet.");

                string str = Console.ReadLine();
                int temp = Convert.ToInt32(str);



                switch (temp)
                {
                    case 1:
                        Console.WriteLine("Lägg till passagerare (ange ålder endast)!");
                        add_passenger();
                        break;
                    case 2:
                        Console.WriteLine("Skriv ut gästlistan!");
                        print_buss();
                        break;
                    case 3:
                        Console.WriteLine("hejsan");
                        break;
                    case 4:
                        Console.WriteLine("hejsan");
                        break;
                    case 0:
                        Console.WriteLine("hejsan");
                        break;
                }



                //ska ändra så att om man väljer 0 så stängs programmet

            } while (true);


            //Här ska menyn ligga för att göra saker
            //Jag rekommenderar switch och case här
            //I filmen nummer 1 för slutprojektet så skapar jag en meny på detta sätt.
            //Dessutom visar jag hur man anropar metoderna nedan via menyn
            //Börja nu med att köra koden för att se att det fungerar innan ni sätter igång med menyn.
            //Bygg sedan steg-för-steg och testkör koden.
        }

        //Metoder för betyget E

        public void add_passenger()
        {




            passagerare = new int[25];

            if (antal_passagerare < 25)

            {
                Console.WriteLine("Ålder på passagerare nr " + antal_passagerare);
                string age = Console.ReadLine();
                int age2 = Convert.ToInt32(age);
                passagerare[antal_passagerare] = age2;
                Console.WriteLine(passagerare[antal_passagerare]);
                antal_passagerare++;
            }

            else
            {
                Console.WriteLine("Bussen är full!");
            }
            //Lägg till passagerare. Här skriver man då in ålder men eventuell annan information.
            //Om bussen är full kan inte någon passagerare stiga på
        }

        public void print_buss()
        {
            for (int i = 0; i < antal_passagerare; i++)
            {
                Console.WriteLine(passagerare[i]);
            }

        }

        // public int calc_total_age()
        //{

        //}


        //public int calc_average_age()
        //{

        //}



        public void find_age()
        {

        }

        public void sort_buss()
        {

        }



    }

    class Program
    {
        public static void Main(string[] args)
        {
            var minbuss = new Buss();
            minbuss.Run();
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}
詹姆斯

如果我正确理解这一点,则您正在设置数组:

passagerare = new int[25];

每次进入该add_passenger函数时都会转换为一个新数组,因此尽管您实际上可能在第一次设置它,但下次用户进入该函数时,它将再次重置。

如果是这种情况,您可以在调用此函数之前简单地定义它并将其作为参数传递。

编辑:关于您的评论,您可以在两个地方之一定义它。

1)您可以创建一个构造函数,将数组设置为如下长度[25]

public Buss(){
    passagerare = new int[25];
}

2)您可以在输入switch语句之前定义它并将数组作为参数传递给每个函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么StringBuffer的拥有,而StringBuilder的不是toStringCache?

为什么此函数返回(拥有的)值?

为什么闭包在这里拥有向量的所有权?

StateT over Cont。为什么我的状态没有被重置?

为什么我看到R向量的类别是“整数”而不是“向量”

当我用引用而不是拥有的值调用std :: mem :: drop时会发生什么?

为什么值是向量?

为什么我可以返回对函数拥有值的引用?

为什么我的NavController无法找到我已经拥有的ID?

为什么有时我的共享actix-web状态会重置回原始值?

为什么我收到商店对象而不是我自己的对象(PizzaState)?

当我将项目推送到Github时,我拥有最早提交的文件,为什么?

为什么在使用StreamController时我自己的流没有发出任何值?

为什么我在Ubuntu 12.04中拥有3.8.0-32内核而不是3.2.0-55?

为什么SELinux文件系统拥有自己的空设备?

为什么我的输入框阴影没有被重置?

当我拥有nvidia显卡时,为什么我的显示控制器是Intel?

JS“ for(arr中的var key)”>抛出了我自己的Array.prototypes,而不是固有的。为什么?

为什么没有我拥有的ls目录的权限,而我却拥有r / w的权限?

为什么我的变量会重置其值?

为什么我的测试套件无法运行我拥有的任何测试?

为什么我同时拥有 root 和 mongodb 权限?

在python中,我的数组值会自己改变,为什么?

我为什么要购买域名?我可以在不注册的情况下拥有自己的网站吗?

为什么我得到的是字母“e”而不是我给它的值?

为什么在 View init 后 State 值没有重置

为什么我的状态没有在函数内部重置

为什么 IntoIter 不拥有这些值?

为什么 ch1 == ch2 是假的,它不是拥有相同的 char 值吗?