代码适用于一种情况,但不适用于其他情况

小丑

我通过声明了4个对象数组;

Student[,] s2 =new BSIT[10,4];
s2[studCount,iden] = new BSIT();        

Student[,] s3 = new BSCS[10,4];
s3[studCount,iden] = new BSCS();

Student[,] s4 = new MSIT[10,4];
s4[studCount,iden] = new MSIT();

Student[,] s5 = new MSCS[10,4];
s5[studCount,iden] = new MSCS();

然后,我进行了一些大小写转换语句,要求输入类似以下的名称:

case 1://BSIT
{
     iden=0;
     Console.Write("Enter Name: ");
     (s2[studCount,iden]).setName(Console.ReadLine());
     do
     {
        Console.Write("Enter Age(15-30 only): ");
        int a = int.Parse(Console.ReadLine());

        if(a>=15 && a<=30)
        {
            (s2[studCount,iden]).setAge(a);
            valid=1;
        }
        else
        {
            valid=0;
            Console.WriteLine("INVALID INPUT. TRY AGAIN.");
        }
     }
     while(valid==0);
}

但是,当我尝试仅在其他其他对象上输入名称时,例如:

case 2://BSCS
{
    iden = 1;
    Console.Write("Enter Name: ");
    (s3[studCount,iden]).setName(Console.ReadLine());       
    do
    {
        Console.Write("Enter Age(15-30 only): ");
        int a = int.Parse(Console.ReadLine());

        if(a>=15 && a<=30)
        {
            (s3[studCount,iden]).setAge(a);
            valid=1;
        }
        else
        {
            valid=0;
            Console.WriteLine("INVALID INPUT. TRY AGAIN.");
        }
    }
    while(valid==0);
}

它给了我System.NullReferenceException:对象引用未设置为对象的实例。

是的,基类(称为“ Student”)具有所有“名称”设置器和获取器,而派生类BSIT和BSCS都仅从Student类获取“名称”字段。

当我输入BSIT信息,但不输入BSCS,MSIT和MSCS信息时,程序如何正常运行?MSIT和MSCS遵循与BSIT和BSCS完全相同的格式,但是它们仍然不起作用。

沙哈里亚尔

问题:

您只需要初始化1个元素

s2[studCount,iden] = new BSIT();
//and so on

0我想这样,所以每当您访问索引上的元素时,[studCount,0]它都可以正常工作。但是没有其他元素。

解决方案:

iden = 1;
Console.Write("Enter Name: ");
s3[studCount,iden] = new BSCS(); //just initialize it before use
(s3[studCount,iden]).setName(Console.ReadLine());     

您的方案:

您必须Student根据他们的保存Discipline因此,您生成了一个包含4列(BSIT,BSCS,MSIT,MSCS)的数组,但是却没有像应有的那样使用它们。您用4列创建了4个数组,现在使用您的方法,您的数组最后将在某些位置包含空元素。

您的方法应该是:

您的课程结构是:

Student
    BSIT
    BSCS
    MSIT
    MSCS

因此,只需创建一个数组Student并将不同的子类实例放入其中。

Student[,] students = new Student[10,4]; //index 0 is for BSIT, 1 for BSCS and so on..

我只是在这里为2种情况编写代码,以帮助您了解其工作原理:

case 1://BSIT
{
     iden = 0;
     Console.Write("Enter Name: ");
     //here you'll initialize the object
     students[studCount, iden] = new BSIT();    //Student is base, so it can contain all of it's child objects

     (students[studCount, iden]).setName(Console.ReadLine());
     do
     {
        Console.Write("Enter Age(15-30 only): ");
        int a = int.Parse(Console.ReadLine());

        if(a>=15 && a<=30)
        {
            (students[studCount, iden]).setAge(a);
            valid=1;
        }
        else
        {
            valid=0;
            Console.WriteLine("INVALID INPUT. TRY AGAIN.");
        }
     }
     while(valid==0);
}

case 2://BSCS
{
    iden = 1;
    Console.Write("Enter Name: ");
    (s3[studCount,iden]).setName(Console.ReadLine());  

    iden = 1;
     Console.Write("Enter Name: ");
     //here you'll initialize the object
     students[studCount, iden] = new BSCS();    //Student is base, so it can contain all of it's child objects (here we're initializing BSCS)

    (students[studCount, iden]).setName(Console.ReadLine()); 
    //your code...

现在,什么都不会被覆盖,所有学科都将位于其指定的列。

注意:我已经更改了数组的名称,因此请在您的代码中的任何地方对其进行修复

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

rails-bootstrap-forms适用于某些样式,但不适用于其他样式

来自分类Dev

CSS动画不适用于CodePen或其他任何地方,但不适用于JSFiddle

来自分类Dev

RewriteRule适用于一种情况,但不适用于其他情况

来自分类Dev

URL重写:规则适用于某些.php页面,但不适用于其他页面。

来自分类Dev

函数模板适用于本地lambda,但不适用于其他函数

来自分类Dev

width.find('。')适用于第一种情况,尽管使用相同的代码,但不适用于第二种情况

来自分类Dev

Physics2D.Raycast适用于某些对象,但不适用于其他对象

来自分类Dev

滚动功能适用于某些单击事件,但不适用于其他事件

来自分类Dev

窗口滚动不适用于其他情况

来自分类Dev

@CrossOrigin批注适用于Rest Controller的一种方法,但不适用于第二种方法

来自分类Dev

CSS代码仅适用于一部分,而不适用于其他部分

来自分类Dev

Javascript Switch语句中的默认仅适用于一种情况,但不适用于两种情况?

来自分类Dev

通用排序适用于整数,但不适用于其他类型

来自分类Dev

rails-bootstrap-forms适用于某些样式,但不适用于其他样式

来自分类Dev

MS Word 2007中的拼写检查器适用于某些语言,但不适用于其他语言

来自分类Dev

IPSET匹配不适用于一种Linux安装,但不适用于另一种...仅影响IPv4

来自分类Dev

PHP / XML路由适用于一种路由,不适用于另一种路由

来自分类Dev

视差滚动适用于1张图像,但不适用于其他图像

来自分类Dev

代码适用于图像,但不适用于Codeigniter中的其他文件

来自分类Dev

全局SSH密钥,适用于root用户,但不适用于其他用户

来自分类Dev

VBA-动态创建的组合框适用于一种形式,但不适用于其他类类问题?

来自分类Dev

grep用于一种模式,但不适用于另一种模式

来自分类Dev

.bat 文件适用于两个域系统,但不适用于其他系统

来自分类Dev

Chrome 仅适用于 1 个帐户,但不适用于其他 3 个帐户

来自分类Dev

为什么以下代码适用于一种模型但不适用于另一种模型?

来自分类Dev

命名空间适用于一个类,但不适用于其他类

来自分类Dev

平滑滚动适用于导航栏,但不适用于其他元素(箭头等)

来自分类Dev

平滑的点击缩放功能适用于某些标记但不适用于其他标记

来自分类Dev

case_when 适用于一种情况,而不适用于另一种情况

Related 相关文章

  1. 1

    rails-bootstrap-forms适用于某些样式,但不适用于其他样式

  2. 2

    CSS动画不适用于CodePen或其他任何地方,但不适用于JSFiddle

  3. 3

    RewriteRule适用于一种情况,但不适用于其他情况

  4. 4

    URL重写:规则适用于某些.php页面,但不适用于其他页面。

  5. 5

    函数模板适用于本地lambda,但不适用于其他函数

  6. 6

    width.find('。')适用于第一种情况,尽管使用相同的代码,但不适用于第二种情况

  7. 7

    Physics2D.Raycast适用于某些对象,但不适用于其他对象

  8. 8

    滚动功能适用于某些单击事件,但不适用于其他事件

  9. 9

    窗口滚动不适用于其他情况

  10. 10

    @CrossOrigin批注适用于Rest Controller的一种方法,但不适用于第二种方法

  11. 11

    CSS代码仅适用于一部分,而不适用于其他部分

  12. 12

    Javascript Switch语句中的默认仅适用于一种情况,但不适用于两种情况?

  13. 13

    通用排序适用于整数,但不适用于其他类型

  14. 14

    rails-bootstrap-forms适用于某些样式,但不适用于其他样式

  15. 15

    MS Word 2007中的拼写检查器适用于某些语言,但不适用于其他语言

  16. 16

    IPSET匹配不适用于一种Linux安装,但不适用于另一种...仅影响IPv4

  17. 17

    PHP / XML路由适用于一种路由,不适用于另一种路由

  18. 18

    视差滚动适用于1张图像,但不适用于其他图像

  19. 19

    代码适用于图像,但不适用于Codeigniter中的其他文件

  20. 20

    全局SSH密钥,适用于root用户,但不适用于其他用户

  21. 21

    VBA-动态创建的组合框适用于一种形式,但不适用于其他类类问题?

  22. 22

    grep用于一种模式,但不适用于另一种模式

  23. 23

    .bat 文件适用于两个域系统,但不适用于其他系统

  24. 24

    Chrome 仅适用于 1 个帐户,但不适用于其他 3 个帐户

  25. 25

    为什么以下代码适用于一种模型但不适用于另一种模型?

  26. 26

    命名空间适用于一个类,但不适用于其他类

  27. 27

    平滑滚动适用于导航栏,但不适用于其他元素(箭头等)

  28. 28

    平滑的点击缩放功能适用于某些标记但不适用于其他标记

  29. 29

    case_when 适用于一种情况,而不适用于另一种情况

热门标签

归档