一维数组

 Java 一维数组:
1.定义:
(1) 类型[] 数组名=new 类型[大小];
(2) 类型 数组名[]=new 类型[大小];
2.数组元素引用:数组名[下标]
下标的下限为0 上限为数组的大小-1
1.给数组赋随机整型值,代码如下:
static void setRandom(int[] x){  //x是目标数组
Random r=new Random();
//Random不要自己打出来,它是一个类 要在一个包里,看顶头,要是自己手打是没有那一行的,需要Alt+Enter回车调用
for (int i=0;i<x.length;i++){
x[i]=r.nextInt(100); //生成一个0-100间的随机整型数赋给x[i]
//nextInt(int n):返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。
}
}

2.为了方便,我们把数组的输出写成方法,代码如下:
/**
* 输出刚开始定义的两个数组的结果(观察用的)
* overload 重载 在外界看来不同类型的数组都用同一个out()方法输出,实则在内部有不用的处理方式
* @param x 目标数组
*/
static void out(int[] x){ //int类型的数组用此out()方法
for(int e: x){
System.out.print(e+" ");
}
System.out.println();
}
static void out(String[] x){ //String类型的数组输出用此out()方法
for(String e: x){ //用for...each...循环写法
System.out.print(e+" ");
}
/*for(int i=0;i<x.length;i++){ //用for循环写法
System.out.print(int[i]+" ");
}*/
System.out.println();
}

3.输出两个数组看看(测试),代码如下:
public static void main(String[] args){
int[] a=new int[5];
String b[]=new String[10];//定义数组,大小为10(即数组b有10个元素)
setRandom(a); //给a数组付随机值
out(a); //调用out函数输出数组a
out(b); //调用out函数输出数组b,注意a与b是不同类型的数组。
}

4.输出一个斐波那契数列,代码如下:
   static void fb (int[] x){
x[0]=1;
x[1]=1;
for (int i=2;i<= x.length-1;i++){
x[i]=x[i-1]+x[i-2];
}
System.out.println("斐波那契数列输出为:");
}
测试:在main方法中加入如下代码:
  int f[]=new int[20];
  fb(f);
  out(f);
5.在数组中插入一个元素,代码如下:
/**
* 在数组中插入一个元素:
* @param a 目标数组
* @param x 要插入的元素
* @param pos 需要插入元素的位置(在哪插入元素)
*/
//此种插入方法,数组的大小不变,即每插入一个元素,原数组的最后以为元素会被清除
static void insert(int[] a,int x,int pos){
for (int j=a.length-1;j>pos;j--){
a[j]=a[j-1];
}
a[pos]=x;
}
//此种插入方法,数组的大小会变化,即插入一个元素,数组大小会+1
/*static int[] insert(int[] a,int x,int pos){
int[] t=new int[a.length+1];
for (int i=0;i<a.length;i++){
t[i]=a[i];
}
for (int j=t.length-1;j>pos;j--){
t[j]=t[j-1];
}
t[pos]=x;
return t;
}*/

测试:在main方法中加入如下代码:
int j[]=new int[5];  //定义数组
setRandom(j);  //给j赋随机值
out(j);  //输出原数组j
insert(j,30,2);  //在j数组的下标为2的位置插入30,与第一种方法对应
//j=insert(j,30,2); //与第二种方法对应
out(j);  //再次输出j数组

6.
在数组中删除一个元素,代码如下:
/**
* 在数组中删除一个元素:
* @param x 目标数组
* @param pos 要删除的元素的下标
* @return
*/
static int[] delete(int[] x,int pos){
for (int i=pos;i<x.length-1;i++){
x[i]=x[i+1];
}
return Arrays.copyOf(x,x.length-1);
}
测试:在main方法中加入如下代码:
 int j[]=new int[5];//定义数组
setRandom(j);//给j赋随机值
out(j);
 delete(j,2);out(j);//这有一个问题:删除一个元素后,Java会自动重赋值最后的元素,数组大小没变
j=delete(j,2);out(j);
j=delete(j,3);out(j);
 
 
 
 
posted @ 2018-01-30 11:36  叫我小谷  阅读(278)  评论(0编辑  收藏  举报