之前我们都是针对一个数据类型的数据的运算
如果在问题中,出现大量的相同类型的数据,那么,就要考虑大量数据的运算(也是采用算术,关系,逻辑运算符)
也要考虑大量数据的保存 (采用数组)
一:数组 ***
1:什么是数组
由一组相同数据类型的数据的组合
2:数组的定义的语法是什么呢
声明数组的语法://声明数组的意思 就是告诉计算机内存,要保留一段某数据类型的空间大小,这时候没有数据存入
数据类型 标识符[ ]; //标识符 就是数组名,也要符合变量的命名规范
int int_array[];
String []str; //[] 中括号可以放在标识符的前面,也可以在后面
利用new 来为数组型变量分配内存空间
array_int=new int[10]; //就是说真正在内存中分配10个大小的int类型的空间,数据全部默认为0
str=new String[10];//在内存中分配10个大小的字符串类型的空间,数据全部为null
声明数组与分配空间完全可以写成一个,叫数组定义
int a[]=new int[10]; // 10 大小必须是整型,并且必须写
//在内存中分配了10个int类型的空间,每个空间都默认为0 第一个空间的地址为a
例子:
//这个例子要大家学会怎么定义数组,怎么输出数组的数据
int a[]=newint[10];
//String a[]=new String[10];
//输出数组中的数据的值 int类型默认的数据为0
for(int i=0;i<a.length;i++){//i<10 可以写成i<a.length
System.out.print(a[i]);//怎么得到数据 a[i] i不能超过数组的长度从0开始
}
System.out.println();
int b1=10;
int a1[]=newint[b1];
//输出数组中的数据的值
for(int i=0;i<10;i++){
System.out.print(a[i]);
}
3:数组的初始化(也就是说怎么给数组赋值)
a:在定义的时候可以赋值
//数组在定义的时候,可以赋值--叫数组的初始化
//注意:数组的大小(长度)不要写,由赋值的数据的多少决定长度
int a[]=newint[]{1,2,3,4,5,6};
for(int i=0;i<a.length;i++){
System.out.print(a[i]);
}
b:通过循环可以给数组赋值
int a[]=newint[6];
//通过循环赋值给数组a
for(int i=0;i<a.length;i++){
a[i]=i;
}
for(int i=0;i<a.length;i++){
System.out.print(a[i]);
}
一维数组的例子:从键盘输入5个整数,求这5个数的最大值
//从键盘输入5个整数,求这5个数的最大值
Scanner s=new Scanner(System.in);
System.out.println("请从键盘输入5个整数:");
int a[]=newint[5];
//给数组a赋值
for(int i=0;i<a.length;i++){
a[i]=s.nextInt();//从键盘输入的时候,要回车
}
System.out.println();
//输出数组a的数据
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
//求最大值
int max=a[0];//max的值为a[0]
for (int i = 1; i < a.length; i++) {
if(a[i]>max){
max=a[i];
}
}
System.out.println("最大值="+max);
例子2:从键盘输入5个整数,请按照升序排列输出
//从键盘输入5个整数,请按照升序排列输出
Scanner s=new Scanner(System.in);
System.out.println("请从键盘输入5个整数:");
int a[]=newint[5];
//给数组a赋值
for(int i=0;i<a.length;i++){
a[i]=s.nextInt();//从键盘输入的时候,要回车
}
System.out.println();
//冒泡排序的规律:记住并且理解的
//第一个循环的 i<数组的长度-1
//第二个循环的 j<数组的长度-i-1
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-i-1; j++) {
if(a[j]>a[j+1]){
//交换数据
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
4:二维数组的定义
如果有行与列的数据,那么采用2维数组,
有2个[]符号
二维数组的语法(标准定义)
数据类型标识符[][]=new 数据类型[行的大小][列的大小];
int a[][]=new int[3][3];//也就是定义3行3列的数据,从0行0列开始
int a[][]=newint[][]{{1,2,3},{4,5,6}};////可以初始化赋值
//也可以循环赋值
//输出
for (int i = 0; i < a.length; i++) {//a.length 就是求出的行数
for (int j = 0; j < 3; j++) {
System.out.print(a[i][j]+" ");
}
System.out.println();
}
例子:定义一个3行3列的数据,求对角线数据的和
int a[][]=newint[][]{{1,2,3},{4,5,6},{7,8,9}};
int sum=0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < 3; j++) {
if(i==j){
sum=sum+a[i][j];
}
}
}
System.out.println("sum="+sum);
sum=0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j<3; j++) {
if((i+j)==2){
sum=sum+a[i][j];
}
}
}
System.out.println("sum="+sum);
System.out.println(a[3][3]);
sum=15
sum=15
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at test.Test.main(Test.java:32)
错误的原因是执行System.out.println(a[3][3]);这行时候出错
ArrayIndexOutOfBoundsException 数组索引超过范围
posted on 2010-06-04 15:10
gjy 阅读(125)
评论(0) 编辑 收藏