数组练习题
1、有一个数组a,请将数组a中的数字进行从小到大和从大到小排序输出,分别打印
public class maopao {
public static void main(String[] args) {
int [] arry = {23,64,18,97,42,35,96,19,68,78,21};
for (int i = 0; i < arry.length; i++) {
for (int j = 0; j < arry.length-i-1; j++) {
if(arry[j] > arry[j+1]){
int temp = arry[j+1];
arry[j+1] = arry[j];
arry[j] = temp;
}
}
}
for (int value:
arry) {
System.out.print(value+"\t");
}
}
}
2、统计数组{20,45,78,34,16,3,99,56}中大于50的有多少个、小于50的有多少个并打印输出。
public class Test{
public static void main(String[] args){
int [] arry = {20,45,78,34,16,3,99,56};
int countBig = 0;
int countSmall = 0;
for(int i = 0 ; i < arry.length ; i++){
if(arry[i] > 50){
countBig++;
}else if(arry[i] < 50){
countSmall++;
}
}
for (int value:
arry) {
System.out.print(value+"\t");
}
System.out.println();
System.out.println("大于50的有:"+countBig);
System.out.println("小于50的有:"+countSmall);
}
}
3、在数组{4,5,6,2,3,1,9,8,7,10,12,14,15}中查找元素(先打印输出所有元素,输入一个数,如果找到了则打印输出其位置,没有找到则提示没有找到)
import java.util.Random;
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) {
Random random = new Random();
Scanner scanner = new Scanner(System.in);
int [] arry = {1,6,8,9,7,94,33};
for (int value : arry){
System.out.print(value+"\t");
}
System.out.println();
while(true){
System.out.println("请输入待查找的数字:");
int number = scanner.nextInt();
boolean count = false;
for (int i = 0; i < arry.length; i++) {
if(number == arry[i]){
System.out.println("这个数的下标是:"+i);
count = true;
}
}
if(!count){
System.out.println("没有这个数字");
break;
}
}
}
}
4.定义一个数组来存储12个学生的成绩{72,89,65,58,87,91,53,82,71,93,76,68},统计各成绩等级(90分以上为‘A’,8089分为‘B’,7079分为‘C’,60~69分为‘D’,60分以下为E)学生人数,并将其放入到数组count中,其中:count[0]存E级的人数,count[1]存D级的人数,……,count[4]存A级的人数。
//90以上 count[4]++
//80~89 count[3]++
//70~79 count[2]++
//60~69 count[1]++
//60以下 count[0]++
public class Test6 {
public static void main(String[] args) {
int [] arry = {0,0,0,0,0};
int[]e={72,89,65,58,87,91,53,82,71,93,76,68,100};
for (int value : e) {
switch (value / 10) {
case 10:
case 9:
arry[4]++;
case 8:
arry[3]++;
case 7:
arry[2]++;
case 6:
arry[1]++;
default:
arry[0]++;
}
}
System.out.println("90分以上有:"+arry[4]);
System.out.println("80分以上有:"+arry[3]);
System.out.println("70分以上有:"+arry[2]);
System.out.println("60分以上有:"+arry[1]);
System.out.println("不及格上有:"+arry[0]);
}
}
7、从键盘输入8个整数存放在一个数组中,然后将奇数和偶数分别存入到两个不同的数组中,并按奇数、偶数交替的顺序输出这两个数组中的所有数据(先交替输出,如果奇数个数多,则再输出剩下的奇数,如果偶数个数多,则再输出剩下的偶数)。(提示与要求:(1)定义一个数组存储从键盘输入的8个整数,先判断这8个整数中奇数和偶数的个数,才能定义存储奇数和偶数的数组的长度;(2)把一个大的数组分别存放在奇数和偶数数组中并交替输出的过程定义为方法)
思路:
动态定义大小为8的数组,创建Scanner对象,for循环遍历数组,把控制台输入数据存入数组
for循环遍历数组,然后条件语句判断奇、偶数,并计数
根据奇数偶数的数量,创建奇数偶数数组
for循环遍历数组,把数赋值给对应的奇、偶数组(在for循环外面定义两个变量分别代表其下标,从零开始,每给奇、偶数组赋值一次,相应下标自加一次)
public class{
public void printArry(int [] arryEven , int [] arrayObb){
int flage = 0; //标志,如果为0,输出奇数,如果为1输出偶数
int length;
//找出奇、偶数谁的长度大,并把它存在length中
if(arryEven.length > arrayobb){
length = arryEven.length;
}else{
lengt = arryObb.length;
}
whlie(i<=length){
if(flage == 0){
System.out.print()
}
}
}
public static void main(String[] args){
Scanner in = new Scanner(String.in);
int [] arry = new int [8];
int countEven = 0; //奇数计数器
int countOdd = 0; //偶数计数器
//把从控制台的输入,存入数组
for(i = 0 ; i < arry.length ; i++){
arry[i] = in.nextInt();
}
for(i = 0 i < arry.length ; i++){
if(arry[i] % 2 == 0)
countEven++;
else
countOdd++;
}
int[] arryEven = new int [countEvent];
int[] arryOdd = new int [countOdd];
int flageEven = 0;
int flageOdd = 0;
for(int i = 0 ; i < arry.length ; i++){
if(arry[i] % 2 == 0){
arryEven[flageEven] == arr[i];
flageEven++;
}else{
arryOdd[flageOdd] == arr[i];
flageOdd++;
}
}
}
}
8、给定一个整型数组, 实现冒泡排序(升序排序)
public class maopao {
public static void main(String[] args) {
int [] arry = {23,64,18,97,42,35,96,19,68,78,21};
for (int i = 0; i < arry.length; i++) {
for (int j = 0; j < arry.length-i-1; j++) {
if(arry[j] > arry[j+1]){
int temp = arry[j+1];
arry[j+1] = arry[j];
arry[j] = temp;
}
}
}
for (int value:
arry) {
System.out.print(value+"\t");
}
}
}