数组习题及详解

来源:互联网 发布:mysql语句优化方法 编辑:程序博客网 时间:2024/06/08 05:59


一、选择题

1 . 定义一个数组String [ ] cities={北京上海天津重庆武汉广州香港},数组中的cities[6]指的是(C)。

A.北京   B.广州

C.香港    D.数组越界

2. 下列数组的初始化正确的是(BD)。(选择两项)

A.int score={90,12,34,77,56};//数据类型 数组名=new数据类型[数组长度 ];

B.int[ ] score=new int[5];//int数组未赋值,默认50String数组默认null

C.int[ ] score=new int[5]{90,12,34,77,56};//二者选其一

D.int score[ ]=new int[ ]{90,12,34,77,56};

3. 以下代码的输出结果是(A)。

public class Test{

public static void main(String[] args){

double[] price=new double[5];

price[0]=98.10;

price[1]=32.18;

price[2]=77.74;

for (int i=0;i<5;i++){

System.out.print((int)price[i]+ )

}//double进行强制转换为int丢失精度

}//price[3]price[4]未赋值,默认为0

}

A . 98  32  77  0  0

B . 98  32  78  0  0

C . 98  32  78

D .编译出错

4. 阅读下面代码,它完成的功能是(B)。

String[ ]a ={我们,你好,小河边,我们,读书}

for (int i=0; i<a.length;i++){

If(a[i].equals("我们")){  //查找

a[i]=他们;//替换

}

}

  1. 查找   B.查找并替代  C.增加  D.删除

5. 下面代码的运行结果是(C)。

Public class Test {

Public static void main(String[] args){

int[ ] a=new int[3];

int[ ] b=new int[ ]{1,2,3,4,5};

a=b;//b数组的地址赋给a数组的地址  a整个存储结构就发生改变,与b数组一致

for ( int i=0; i<b.length;i++){

System.out.print(a[i]+ )

}

}

}

A . 程序报错    B. 1  2  3  

C. 1 2 3 4 5   D. 0 0 0

     

二、简答题

1. 阅读以下代码,找出其中的错误。

String[ ] scores= new String[5]{mike,Lily,Sunny,Jenny,Anna}; 

for (int i=0; i<=scores.length;i++){ //报数组越界异常

System.out.println(scores[i]);

}

 

2. 依次输入5句话,然后将它逆序输出。

(提示):创建一个字符串数组,每句话作为字符串数组的一个元素,然后从该数组的末尾开始循环输出。

public class Test{

public static void main(String[] args){

//定义一个字符串数组

String[] str=new String[5];

//扫描仪

Scanner sc=new Scanner(System.in);

for(int i=0;i<str.length;i++){

System.out.println("请输入第"+(i+1)+"句话:");

str[i]=sc.next();

}

System.out.println("反向输出:");

for(int j=str.length-1;j>=0;j--){

System.out.println(str[j]);

}

}

}

3. 某百货商场当日消费积分最高的8名顾客,他们的积分分别是18257361328963。编写程序找出最低的积分及其他在数组中的原始位置(下标)。

(提示):创建数组points[],存储8名顾客的积分。

定义变量min存储最低积分,定义变量index存储最低积分的下标。

假设第一个元素为最低积分,下标为0.

遍历数组,将数组元素和min的值进行比较。

public static void main(String[] args) {

//TODO Auto-generated method stub

int[] points=new int[]{18,25,7,36,13,2,89,63};

int min=points[0];//最小值

int index=0;//下标

for(int i=1;i<points.length;i++){

//1个数只作为参考数

if(min>points[i]){

min=points[i];

index=i;

}

}

System.out.println("最小数:"+min);

System.out.println("对应的下标:"+index);

}

 

4. 从键盘上输入10个整数,合法值为1,23,不是这3个数则为非法数字。试编程统记每个整数和非法数字的个数。

(提示):创建数组nums【】,长度是10,存储用户输入的数字。

创建数组count,长度为4,存储3个合法数字和非合法数字的个数。

循环输入数字,利用switch判断数字的值,根据不同的值对数组count【】中的不同元素进行累加。

分析:

1:定义一个存储10个整数数组

2:统计1? 统计2?统计3?  统计其它?  定义一个存4个整数数组

3:一边输入,一边统计?switch结合for

public static void main(String[] args) {

//TODO Auto-generated method stub

Scanner sc=new Scanner(System.in);//扫描仪

int[] number=new int[10];//定义一个存储10个整数数组

//统计数组中合法与非法数字

int[] count=new int[4];

//依次输入进去

for(int i=0;i<number.length;i++){

System.out.println("请输入第"+(i+1)+"个整数:");

number[i]=sc.nextInt();

switch(number[i]){

//String(jdk1.7以上)int char

case 1:

//统计数字1

count[0]++;//自增 加1个   1++; 2

break;

case 2:

//统计数字2

count[1]++;

break;

case 3:

//统计数字3

count[2]++;

break;

default:

//统计非法的

count[3]++;

break;

}

}

System.out.println("数字1的个数:"+count[0]);

System.out.println("数字2的个数:"+count[1]);

System.out.println("数字3的个数:"+count[2]);

System.out.println("非法的数字:"+count[3]);

}

 

 

5. 假设有一个长度为5的数组,如下所示。

Int[] array = new int [] {13-15-2}

现创建一个新数组newArray【】,要求新数组中的元素的存放顺序与原数组中的元素逆序,并且如果原数组中的原数值小于0,在新数组中按0存储。试编程输出新数组中的元素,程序运行结果如图8.17所示。

(提示):利用循环从原数组最后一个元素(下标为array.lenght-1)开始处理,如果该元素的值小于0,利用continue推出本次循环(整型数组中的元素默认值为0)。

如果该元素值大于0,则该元素复制到新数组合适的位置。对于原数组下标为i的元素,在新数组中的下标为arrayLength-i-1

处理完成,利用循环输出新数组中的元素。

public static void main(String[] args) {

//TODO Auto-generated method stub

//原始数组

int[] array=new int[]{1,3,-1,5,-2};

System.out.println("原数组的数据:");

for (int m : array) {

System.out.print(m+"\t");

}

System.out.println();

//新数组

int[] newarray=new int[array.length];

for(int i=0;i<array.length;i++){

if(array[array.length-i-1]<0){

//比较的是最后一个数

continue;

}

newarray[i]=array[array.length-i-1];

}

System.out.println("经过处理后的新数组:");

for (int n : newarray) {

System.out.print(n+"\t");

}

}

 

6. 有一组英文歌曲,按照歌曲名称的字母顺序从“A”到“Z”顺序排列,保存在一个数组中。网上搜下英文歌

现在增加一首新歌,将他插入数组,并保持噶去名称升序排列。程序运行结果如图8.18所示。

比较数字的大小可以用>”“<”等运算符,但如何比较字符串的大小呢?可以使用字符串的compareTolgnoreCase()方法。语法格式如下:

If( musics[i].compareToIgnoreCase(music)>0){

Index=I;

Break;

}

|-写活!音乐 输入4首  随便输入四首歌曲  插入之前,必须是按照a-z 的顺序排列?

public static void main(String[] args) {

//TODO Auto-generated method stub

//定义一个旧的音乐架

String[] oldmusic=new String[4];

Scanner sc=new Scanner(System.in);

//定义一个新的音乐架

String[] newmusic=new String[oldmusic.length+1];

//定义一个音乐

String music="";

//下标

int index=oldmusic.length;

//1:依次输入音乐

for(int i=0;i<oldmusic.length;i++){

System.out.println("请输入第"+(i+1)+"首音乐:");

oldmusic[i]=sc.next();

}

//排序  ascii码进行排序

Arrays.sort(oldmusic);

//2:显示所有音乐

for (String aa : oldmusic) {

System.out.print(aa+"\t");

}

System.out.println();

//3:复制

for(int j=0;j<oldmusic.length;j++){

newmusic[j]=oldmusic[j];

}

//4:输入新歌

System.out.println("请输入新歌:");

music=sc.next();

//5:找位置

for(int k=0;k<oldmusic.length;k++){

if(oldmusic[k].compareToIgnoreCase(music)>0){

index=k;//记下坐标

break;

}

}

//6:移位

for(int n=newmusic.length-1;n>index;n--){

newmusic[n]=newmusic[n-1];

}

//7:插入

newmusic[index]=music;

System.out.println("新添加的歌曲:");

for (String cc : newmusic) {

System.out.print(cc+"\t");

}

}

 

 

 

原创粉丝点击