数组应用

数组
本次课程重点是数组的应用。
这里首先要对数组有一个概念上的认识:数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。(以上参考专业资料)
以我所理解来看,数组就是开辟N个单元将N个不同的但是类型相同的元素存入,方便后续调用的这么一个工具。数组的类型除了上述所说的几种外,还有自己定义的类型。
然后,我们需要明白数组定义的方法,这里一一维数组的定义为例:类型[] 数组名=new 类型[数组长度];
这里举一个简单的一维整型数组的应用例子
public class Shuzu {
public static void main(String[] args) {
int[] in=new int[5];
for(int i=0;i<5;i++){
in[i]=100*i;
}
for(int i=0;i<5;i++){
System.out.println("第"+i+1+"个数是:"+in[i]);
}
}
}
这个简单的例子是考察数组的定义,数组的赋值以及数组的调用.
接下来,是一个自定义类数组的例子,这里先定义一个Student的类:public class Student {
public String name;
public int num;
}
主函数如下:
public class Shuzu2 {
public static void main(String[] args){
Student[] stu=new Student[5];
for(int i=0;i<5;i++){
Student st=new Student();
stu[i]=st;
stu[i].name="lps";
stu[i].num=i+1;
}
for(int i=0;i<5;i++){
System.out.println("第"+(i+1)+"个学生的姓名是"+stu[i].name+" 学号是"+(i+1));
}
}
}
在编写以上程序时,本人出现了一些问题:在给类数组赋值时,我曾经想直接赋值: for(int i=0;i<5;i++){
//缺少Student st=new Student();
stu[i].name="lps";
stu[i].num=i+1;
}
这样的话,系统将会报错,这是因为类数组只被声明,但还未开辟内存存放,如此则不能赋值,这也就是Student st=new Student();这句话的作用。
接下来,是一个简单画板实现划线与重绘的功能,将也用到一个类数组,代码如下:
//自定义一个类来存放坐标
public class ZuoBiao {
public int x1,x2,y1,y2;
}
public class ShuzuDraw extends JFrame{
private DrawListener dr;
public static void main(String[] args){
ShuzuDraw jf=new ShuzuDraw();
jf.showFrame();
}

public void showFrame()
{
this.setTitle("简单画板");
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(3);
this.setSize(500, 500);
this.setVisible(true);
Graphics g=this.getGraphics();
dr=new DrawListener(g);
this.addMouseListener(dr);
}

public void paint(Graphics g){
super.paint(g);
for(int i=0;i<dr.Z.length;i++){
ZuoBiao Z[i]=new ZuoBiao;
g.drawLine(dr.Z[i].x1,dr.Z[i].y1,dr.Z[i].x2, dr.Z[i].y2);
}


}

}


public class DrawListener implements MouseListener{
private Graphics g;
private int count=0;
private int x1,x2,y1,y2;
public ZuoBiao[] Z=new ZuoBiao[10];

public DrawListener(Graphics g){
this.g=g;
}

public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}

@Override
public void mousePressed(MouseEvent e) {
x1=e.getX();
y1=e.getY();

}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
x2=e.getX();
y2=e.getY();
g.drawLine(x1, y1, x2, y2);
ZuoBiao A=new ZuoBiao();
A.x1=x1;
A.x2=x2;
A.y1=y1;
A.y2=y2;
Z[count]=A;
count++;
}
}
这里要注意的问题:在没有给Z[]数组赋值时(即鼠标还没有点击时),数组z是空的,若没有 ZuoBiao Z[i]=new ZuoBiao;则系统将会报空指针的错误!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值