对象数组空指针异常说明——C#中使用对象数组必须分别为其开辟空间
l 场景
定义一个学生类,包含字段(学号,姓名,语文成绩,数学成绩,英语成绩)、属性(总成绩)、三个方法分别为(求平均分、数学平均分、语文平均分)。
要求:在main()方法中,定义一个学生类型的数组,保存全班所有同学的信息,并通过控制台为每个同学输入字段(学号,姓名,语文成绩,数学成绩,英语成绩)的值,最后,控制台输出班级一共有多少个学生,各科及总分平均分分别为多少。
l 实验方法
1. 在控制台应用程序程序中编写代码,项目名为student。
2. 分析类的成员。
3. 编写类声明语句,包括字段、、属性、方法声明。
l 实验结果
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace Student
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入班级中学生人数:");
int num = int.Parse(Console.ReadLine());
Student[] stu = new Student[num];
for (int i = 0; i < stu.Length; i++)
{
stu[i] = new Student();//必须分别开辟空间
}
int count=0;
int sumShuxue=0;
int sumYuwen=0;
int sumYingyu=0;
int sumScore=0;
int avgShuxue,avgYuwen, avgYingyu, avgScore;
for (int i = 0; i < stu.Length; i++)
{
Console.WriteLine("请输入第{0}个学生的学号:", i+1);
stu[i].Num = string.Format(Console.ReadLine());
Console.WriteLine("请输入第{0}个学生的姓名:", i + 1);
stu[i].Name = string.Format(Console.ReadLine());
Console.WriteLine("请输入第{0}个学生的语文成绩:", i + 1);
stu[i].Yuwen = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第{0}个学生的数学成绩:", i + 1);
stu[i].Shuxue = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第{0}个学生的英语成绩:", i + 1);
stu[i].Yingyu = int.Parse(Console.ReadLine());
count++;
}
for (int j = 0; j < stu.Length; j++)
{
sumYuwen = sumYuwen + stu[j].Yuwen;
sumShuxue = sumShuxue + stu[j].Shuxue;
sumYingyu = sumYingyu + stu[j].Yingyu;
sumScore = sumScore + stu[j].Score;
}
avgYuwen = sumYuwen / count;
avgShuxue = sumShuxue / count;
avgYingyu = sumYingyu / count;
avgScore = sumScore / count ;
Console.WriteLine("一共有{0}名学生,班级语文平均分为{1},数学平均分为{2},班级英语成绩分为{3},总分平均分为{4}",count,avgYuwen,avgShuxue,avgYingyu,avgScore);
Console.ReadLine();
}
}
class Student
{
public string num; public string Num
{
get { return num; }
set { num = value; }
}
string name; public string Name
{
get { return name; }
set { name = value; }
}
int yuwen; public int Yuwen
{
get { return yuwen; }
set { yuwen = value; }
}
int shuxue; public int Shuxue
{
get { return shuxue; }
set { shuxue = value; }
}
int yingyu; public int Yingyu
{
get { return yingyu; }
set { yingyu = value; }
}
public int Score
{
get { return yingyu + shuxue + yuwen; }
} } }
对象数组空指针异常说明——C#中使用对象数组必须分别为其开辟空间的更多相关文章
- 根据数组下标在MongoDB中修改数组元素
如下图这样的数据: 即文档中某个字段是一个数组,而每个数组元素又是一个对象,现在需求是对每个对象中的content字段值作情感分析后,把情感分析得到的结果增加到这个对象中去. 如上图中第1个元素,修改 ...
- 在thinkphp框架中使用后台传值过来的数组,在hightcart中使用数组
js的数组是和php里面数组是不一样的,所以模板文件需要先接受,然后利用Js代码转化之后再使用,接受后台的数组有几种办法 1.后台传过来的json数组,利用Js是可以接受的,然后将json数据利用js ...
- PHP中的数组方法及访问方法总结
一.数组操作的基本函数 数组的键名和值 array_values($arr);获得数组的值 array_keys($arr);获得数组的键名 array_flip($arr);数组中的值与键名互换(如 ...
- javascript中稀疏数组和密集数组
密集数组 数组是一片连续的存储空间,有着固定的长度.加入数组其实位置是address,长度为n,那么占用的存储空间是address[0],address[1],address[2].......add ...
- C++中若类中没有默认构造函数,如何使用对象数组
前言: 如果定义一个类,有其默认的构造函数,则使用new动态实例化一个对象数组,不是件难事,如下代码: #include <memory> #include <iostream> ...
- JS对象 JavaScript 中的所有事物都是对象,如:字符串、数值、数组、函数等,每个对象带有属性和方法。
什么是对象 JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等: 对象的方法: ...
- struts2:遍历自定义字符串数组,遍历Action实例所引用对象中的数组
在struts2:OGNL表达式,遍历List.Map集合:投影的使用一文中已经讲述了OGNL遍历List.Map集合等功能. 本文简单写一个遍历数组的示范程序. 1. 遍历自定义字符串数组 < ...
- JavaScript 中有关数组对象的方法
JS 处理数组多种方法 js 中的数据类型分为两大类:原始类型和对象类型. 原始类型包括:数值.字符串.布尔值.null.undefined 对象类型包括:对象即是属性的集合,当然这里又两个特殊的对象 ...
- js中的数组对象排序(方法sort()详细介绍)
定义和用法 sort() 方法用于对数组的元素进行排序. 语法 arrayObject.sort(sortby) 参数sortby:可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意 ...
随机推荐
- Discuz二次开发手册
Discuz文件说明,有助于discuz爱好者,进行自己的开发,在这里提供方便 admincp.php——后台系统设置主程序文件,一般只处理菜单的显示的访问权限,不处理管理控制. ajax.php—— ...
- JSP/Servlet环境配置
下载安装JDK并配置环境变量 这里我下载安装的是jdk-7u51-windows-i586,如果你没有请到Oracle官网下载: [我的电脑]-[高级系统设置]-[环境变量]-系统变量中的Path添加 ...
- void bind(String sName,Object object);――绑定:把名称同对象关联的过程
void bind(String sName,Object object);――绑定:把名称同对象关联的过程 void rebind(String sName,Object object);――重新绑 ...
- 扒一扒asp.net core mvc控制器的寻找流程
不太会排版,大家将就看吧. asp.net core mvc和asp.net mvc中都有一个比较有意思的而又被大家容易忽略的功能,控制器可以写在非Web程序集中,比如Web程序集:"MyW ...
- Linux下汇编语言------计算n的阶乘
用高级语言比方C语言写个阶乘非常easy,那如今就来熟悉下Linux使用AT&T汇编格式写一个程序来计算阶乘吧 写法一是 使用跳转指令实现.写法二是使用函数来实现 约定:本程序没有将结果打印在 ...
- phpstorm将多个int数字拼接成字符串
场景:将程序输出的多个int数字拼成以','分隔的字符串 数据为 8680 24399 37619 45425 49635 139334 386918 429498 461616 523384 561 ...
- httpclient 怎么带上登录成功后返回的cookie值访问下一页面
我是只很菜很菜的小鸟.刚上班,有这个一个需求.要我抓取别的网站的数据. 我根据用户密码登录一个网站成功后,生成一个cookie值.我已经获取到了.然后要带上这个cookie值进行下一页面的访问 ...
- CodeIgniter框架——CI中视图路径问题
答: 视图中的所有路径全部和 index.php 同级,也就是和 index.php 属于一个目录下,也就是网站根目录. 因为 index.php 后面看似是路径的东西其实那只是一种 URL 参数而已 ...
- POJ3487[稳定婚姻]
The Stable Marriage Problem Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2974 Accepted ...
- 【转】Gacutil.exe(全局程序集缓存工具)
全局程序集缓存工具使您可以查看和操作全局程序集缓存和下载缓存的内容. 安装 Visual Studio 和 Windows SDK 时会自动安装此工具. 要运行工具,我们建议您使用 Visual St ...