您的位置:首页 > 编程语言 > Java开发

数组习题及详解

2017-07-25 11:28 120 查看

一、选择题
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数组未赋值,默认5个0,String数组默认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]=”他们”;//替换
}
}

查找  
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名顾客,他们的积分分别是18、25、7、36、13、2、89、63。编写程序找出最低的积分及其他在数组中的原始位置(下标)。
(提示):创建数组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,2或3,不是这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 [] {1、3、-1、5、-2};
现创建一个新数组newArray【】,要求新数组中的元素的存放顺序与原数组中的元素逆序,并且如果原数组中的原数值小于0,在新数组中按0存储。试编程输出新数组中的元素,程序运行结果如图8.17所示。
(提示):利用循环从原数组最后一个元素(下标为array.lenght-1)开始处理,如果该元素的值小于0,利用continue推出本次循环(整型数组中的元素默认值为0)。
如果该元素值大于0,则该元素复制到新数组合适的位置。对于原数组下标为i的元素,在新数组中的下标为array。Length-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
=newmusic[n-1];
}
//7:插入
newmusic[index]=music;
System.out.println("新添加的歌曲:");
for (String
cc : newmusic) {
System.out.print(cc+"\t");
}
}
 
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 数组 练习题