一、一维数组:
1.定义:一维数组(简称为数组)是由一组具有相同类型的变量组成的有序集合。
数组中的变量被称为数组元素。
每个元素在数组中的位置被称为元素的下标。下标从零a[0]开始,数组长度-1结束。
int[ ] a=new int[10]; 或 int a[ ]=new int[10]; 10表示数组的长度,元素的个数。
数组的下标可以是变量。因此,可以这样来处理数组的元素:
a[i]= a[i-1]+ a[i-2]; // 相当于:a[2]= a[1]+ a[0];(最常用的方式! )
说明: (1)数组的长度可以利用表达式“数组名.length”来获得。
(2)在创建时,数组的长度必须是常量!
(3)数组一旦被创建,其大小即被固定,无法改变。
(4)数组越界,JAVA将会产生数组下标越界异常:ArrayIndexOutOfBoundsException
2.一维数组的初始化:
数组的初始化是指:在创建数组实例时进行元素的初始化。
int[ ] group={0,1,2,3,4,5,6,7,8,9};
意义: 创建一个长度为10的int型数组实例,并使它们的初值依次
为给定的初值;然后将该数组实例赋给引用名group。
注:(1)使用数组初始化时,被创建的数组的长度由初始化数据的个 数确定。
(2)用new创建数组时不能赋初值(系统将赋于它们默认值)。
package cn.test.day0912;
/**
* 1.将十个数 20,32,43,65,71,14,55,33,97,66存入数组中,求十个数中的最大值和最小值.
注:要求用方法实现.
* @author
*
*/
public class Arrays {
public static void main(String[] args) {
int a[]=arrays();
for(int i=0;i<10;i++){
System.out.print(a[i]+"\t");
}
System.out.print("\n");
int max=0;
int min=0;
max=a[0];
min=a[9];
System.out.println("最大值:"+max);
System.out.println("最小值:"+min);
}
public static int[] arrays(){
int arrays[] ={20,32,43,65,71,14,55,33,97,66};
for(int i=0;i<10;i++){
for(int k=i+1;k<10;k++){
if(arrays[i]<arrays[k]){
int temp=arrays[i];
arrays[i]=arrays[k];
arrays[k]=temp;
}
}
}
return arrays;
}
}
package cn.test.day0912;
import java.util.Scanner;
/**
*
* 输入10个整数,输出它们的平均值以及所有超过平均值的数。
* @author shixb
*
*/
public class Mean2 {
public static void main(String[] args) {
a();
}
public static void a(){
Scanner scanner = new Scanner(System.in);
int arrays[] =new int[10];
for(int j=0;j<10;j++){
System.out.println("请输入第"+j+"个元素:");
arrays[j] = scanner.nextInt();
}
int num=0;
for(int i=0;i<arrays.length;i++){
num=num+arrays[i];
}
double a=num/10;
System.out.println("平均数:"+a);
for(int i=0;i<arrays.length;i++){
if(arrays[i]>a){
System.out.println(arrays[i]);
}
}
}
}
二维数组:
定义:元素是一维数组的数组叫二维数组;
类型名[][] 数组名 = new 类型名[][];
int[][] a=new int[][];
int[][] a={{1,2}{3,4}{21,32}};
则:a[2][1]=32;
意义:a引用了一个其元素类型为int[4]的数组,a的长度为3.或者说:a有三个元素,其每个元素都是一个长度为2的一维整型数组。
package cn.test.day0918;
public class Exp607 {
public static void main(String[] args) {
int[][] a= { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
System.out.println( " 按行输出:" );
for( int i=0; i<a.length; i++){
for(int j=0;j<a[i].length; j++){
System.out.print( a[i][j]+"\t" );
}
System.out.println( );
}
/*System.out.println( " 按列输出:" );
for(int j=0;j<a[2].length;j++){
for(int i=0;i<a.length;i++){
System.out.print(a[i][j]+"\t");
}
System.out.print("\n");
}*/
}
}
package cn.test.day0913;
public class Getmax {
public static void main(String[] args) {
arrays();
newArrays();
int a[]={2,4,35,56,4};
int x=3;
int c=search(a,x);
System.out.println("返回为:"+"\n"+c);
int b[]={23,43,5,7,6,34,54,56,76,88};
int e[]=print_MaxMin(b);
System.out.println("最大值为:"+e[0]+"\n"+"最小值为:"+e[1]);
}
/**
* 编写一个程序:输入10个正整数,要求完成下列任务
(1)输出其中的最大值;
(2)按与输入相反的次序输出这10个数,每行5个;
*
*/
public static void arrays(){
int[] nums={12,32,23,45,65,34,33,78,98,88};
int max=0;
for(int i=0;i<nums.length;i++){
if(nums[i]>max){
max=nums[i];
}
}
System.out.println("最大值为:"+max);
for(int i=nums.length-1;i>=0;i--){
System.out.print(nums[i]+"\t");
if(i==nums.length/2){
System.out.print("\n");
}
}
System.out.print("\n");
}
/**
* 按行顺序为一个5×5的二维数组a赋1到25的自然数,
然后输出该数组的左下半三角元素。
*/
public static void newArrays() {
int[][] arrays = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 }, { 16, 17, 18, 19, 20 },
{ 21, 22, 23, 24, 25 } };
System.out.print(“图形为:”+”\n”);
for (int i = 0; i < arrays.length; i++) {
for (int j = 0 ; j < arrays[i].length; j++) {
if (j <= i) {
System.out.print(arrays[i][j]+”\t”);
}
}
System.out.print(“\n”);
}
}
/**
* 编写一个方法search(int a[ ],int x):
若数组a中存在值为x 的元素,则返回该元素的下标值;否则返回-1。
*
*/
public static int search(int a[],int x){
for(int i=0;i<a.length;i++){
if(a[i]==x){
return i;
}
}
return -1;
}
/**
* 编写一个方法print_MaxMin(int a[]):
打印出数组a中的最大值和最小值。
*
*/
public static int[] print_MaxMin(int b[]){
int d[]=new int[2];
int max=0;
int min=b[0];
for(int i=0;i<b.length;i++){
if(b[i]>max){
max=b[i];
}else if(b[i]<min){
min=b[i];
}
}
d[0]=max;
d[1]=min;
return d;
}
}