对象数组空指针异常说明——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:可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意 ...
随机推荐
- FD_CLOEXEC用法及原因_转
转自:使用FD_CLOEXEC实现close-on-exec,关闭子进程无用文件描述符 我们经常会碰到需要fork子进程的情况,而且子进程很可能会继续exec新的程序.这就不得不提到子进程中无用文件描 ...
- ACM Computer Factory - poj 3436 (最大流)
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5949 Accepted: 2053 Special Judge ...
- JVM架构和GC垃圾回收机制详解
JVM架构图分析 下图:参考网络+书籍,如有侵权请见谅 (想了解Hadoop内存溢出请看:Hadoop内存溢出(OOM)分类.参数调优化) JVM被分为三个主要的子系统 (1)类加载器子系统(2)运行 ...
- js实现pdf对页面的打印
//-------------------------------点击打印的图标--------------------------------- <div class="dcsc&q ...
- 如何创建Windows定时任务
我们经常使用电脑,有没有那么一个瞬间想着要是电脑可以每隔一段时间,自动处理一件事情就好了呢? 其实Windows还真有这样的功能,很多软件检测更新就是通过这个方法实现的. 这次我们来做一个简易的喝水提 ...
- 【转】Silverlight全开源工作流设计器
声明 此工作流是作者自行构思和设计的被动式数据触发模式的工作流.没有遵循各种现有的工作流设计标准(如WFMC或WSFL),也没有与其他工作流通用性的接口规范.这里体现更多的是作者对工作流的使用思想,及 ...
- [浪风JQuery开发]jquery最有意思的IFrame类似应用--值得深入研究
前几天一时兴起答应朋友的需求--做一个外国的企业网站: 本想做就做呗,可没想我辛辛苦苦用浪风认真php平台开发后,对方来一句我服务器不能安装其他程序,请给我用frame框架开发. 浪风那是一个苦字难言 ...
- SlidingMenu官方实例分析2——BaseActivity
本文从BaseActivity说起,因为其他功能页面都继承了这个类. 这里继承了Sliding中的SlidingFragmentActivity,其实也可以继承SlidingActivity, 但是现 ...
- Linux虚拟机安装完centos后环境配置
linux下面安装软件 yum install rpm -ivh 编译安装 三部曲:./configure make make install 卸载 rpm -e 安装方法 1)通过yum安装软件 需 ...
- Sql server还原失败(数据库正在使用,无法获得对数据库的独占访问权)
Sql server还原失败(数据库正在使用,无法获得对数据库的独占访问权) 问题分析:数据库还原的时候还有其他进程连在上面,导致无法获得独占造成的. 解决方案: 一.切断连接进程 .查询要还原的数据 ...