Java数组练习一(数组遍历控制)

编程题

第1题

模拟大乐透号码:

一组大乐透号码由10个1-99之间的数字组成打印大乐透号码信息代码实现,效果如图所示:Java数组练习一(数组遍历控制)_第1张图片

代码实现:

import java.util.Random;

public class Test01 {
	public static void main(String[] args) {
		
		System.out.println("您的大乐透号码为:");
		//声明并创建数组
		int[] array = new int[10];
		Random random = new Random();
		for(int i = 0; i < array.length; i++){
			array[i] = random.nextInt(99)+1;
		}
		
		for(int i = 0;i < array.length; i++){
			System.out.print(array[i]+" ");
		}
		
		
	}

}

第2题

打印扑克牌

代码实现,效果如图所示:

代码实现:

public class Test02 {
	public static void main(String[] args) {
		//花色
		String[] strFlower = {"黑桃","红桃","梅花","方片"};
		//点数
		String[] strNumber = {"A","1","2","3","4","5","6","7","8"
					,"9","10","J","Q","K"};
		for(int i=0; i

第3题

模拟在一副牌中,抽取第1张,第5张,第50张扑克牌。

代码实现,效果如图所示:

代码实现:

public class Test03 {
	public static void main(String[] args) {
		//花色
		String[] strFlower = {"黑桃","红桃","梅花","方片"};
		//点数
		String[] strNumber = {"A","2","3","4","5","6","7","8"
					,"9","10","J","Q","K"};
		//整合
		String[] strPu = new String[strFlower.length*strNumber.length];
		for(int i=0,k=0; i

第4题

统计字符

字符数组:{'a','l','f','m','f','o','b','b','s','n'}

统计每个字符出现的次数并打印到控制台。

代码实现,部分效果如图所示:

Java数组练习一(数组遍历控制)_第2张图片

代码实现:
 

public class Test04 {
	public static void main(String[] args) {
		char[] ch = {'a','l','f','m','f','o','b','b','s','n'};
		int[] count = new int[26];
		//遍历将计算每个字母出现的次数
		for(int i = 0; i < ch.length; i++){		
			count[ch[i]-97]++;		
		}
		
		//遍历count数组显示结果
		for(int i = 0; i < count.length; i++){
			if(count[i] != 0){
				System.out.println((char)(i+97)+"--"+count[i]);
			}
		}
	}
}

第5题

统计高于平均分的分数有多少个。

 定义数组[95, 92, 75, 56, 98, 71, 80, 58, 91, 91]。

代码实现,效果如图所示:

代码实现:

public class Test05 {
	public static void main(String[] args) {
		
		int[] arr = {95,92,75,56,98,71,80,58,91,91};
		//总分,平均分
		int acount = 0, avge = 0;
		//比平均分高的个数
		int count = 0;
		for(int i = 0; i < arr.length; i++){
			acount += arr[i];
		}
		avge = acount / arr.length;
		for(int i = 0; i < arr.length; i++){
			if(arr[i] > avge){
				count++;
			}
		}
		System.out.println("高于平均分:" + avge + "的个数有"+count+"个");
	}
}

第6题

判断数组中的元素值是否对称.

代码实现,效果如图所示:

代码实现:

public class Test06 {
	public static void main(String[] args) {
		int[] arr = {1,2,3,5,4,3,2,1};
		int len = arr.length - 1;
		//假设对称
		boolean flag = true;
		//遍历,收尾判断
		for(int i = 0; i <= len ; i++){
			if(arr[i] != arr[len--]){
				flag = false;
				break;
			}
		}
		for(int i = 0; i < arr.length; i++){
			if(i == 0){
				System.out.print("["+arr[i]);
			}else{
				System.out.print(","+arr[i]);
			}
		}
		System.out.print("]是否对称:");
		System.out.println(flag?"对称":"非对称");
	}
}

第7题

比较两个数组内容是否完全一致。

代码实现,效果如图所示:

Java数组练习一(数组遍历控制)_第3张图片

代码实现:

public class Test07 {
	public static void main(String[] args) {
		int[] arr1 = {1,2,3,4,5,6,7};
		int[] arr2 = {1,2,3,4,5,6,7};
	
		boolean flag = true;//假设一致
		if(arr1.length!=arr2.length){
			flag = false;
		}else{
			for (int i = 0; i < arr2.length; i++) {
				if(arr1[i] != arr2[i]){
					flag = false;
					break;
				}
			}
		}
		System.out.println("是否一致:" + flag);
	}
}

第8题

根据标准答案【ADBCD】,每题2分共10分,求出每名学生最终得分。

四名同学答案分别为:小尚:【DCBAD】小硅:【ADBCD】小谷:【ADBCA】小好:【ABCDD】每答对一题,得2分,输出四名同学的最终得分。

代码实现,效果如图所示:

Java数组练习一(数组遍历控制)_第4张图片

代码实现:

package com.atguigu.com;

public class Test08 {
	public static void main(String[] args) {
		char[] answer = {'A','D','B','C','D'};
		
		char[] jue = {'D','C','B','X','D'};
		char[] qing = {'A','D','B','C','D'};
		char[] gu = {'A','D','B','C','A'};
		char[] good = {'A','B','C','D','D'};
		
		String[] str = {"小绝","小情","小谷","小好"};
		
		int[] counts = new int[4];
		for(int i = 0; i < answer.length; i++){
			if(answer[i] == jue[i]){
				counts[0]++;
			}
			if(answer[i] == qing[i]){
				counts[1]++;
			}
			if(answer[i] == gu[i]){
				counts[2]++;
			}
			if(answer[i] == good[i]){
				counts[3]++;
			}
		}
		for(int i = 0; i < counts.length; i++){
			System.out.println("满分10分,"+str[i]+":得分:"+counts[i]*2+"分");

		}

	}
}

第9题

左奇右偶

10个整数的数组{26,67,49,38,52,66,7,71,56,87}。元素重新排列,所有的奇数保存到数组左边,所有的偶数保存到数组右边。

代码实现,效果如图所示:

Java数组练习一(数组遍历控制)_第5张图片

代码实现:

package com.atguigu.com;

public class Test09 {
	public static void main(String[] args) {
		int[] arr = {26,67,49,38,52,66,7,71,56,87};
		int left = 0
			,right = arr.length - 1;
		System.out.print("原数组:\n[");
		//输出原数组
		for(int i = 0; i <= arr.length-1; i++){
			if(i == 0){
				System.out.print(arr[i]);
			}else{
				System.out.print(","+arr[i]);
			}
		}
		//判断奇偶数以及交换
		while(left < right){
			if(arr[left] % 2 == 0 && arr[right] % 2 != 0){
				int temp = arr[left];
				arr[left] = arr[right];
				arr[right] = temp;
				
				left++;
				right--;
			}else if(arr[left] % 2 != 0){
				left++;
			}else if(arr[right] % 2 == 0){
				right--;
			}
				
			
		}
		System.out.print("]\n排列后:\n[");
		//交换完数组
		for(int i = 0; i <= arr.length-1; i++){
			if(i == 0){
				System.out.print(arr[i]);
			}else{
				System.out.print(","+arr[i]);
			}
		}
		System.out.print("]");

	}
}

第10题

案例:从键盘输入本组学员的人数,和本组学员的成绩,用数组存储成绩,然后实现从高到低排序

代码实现:

import java.util.Scanner;

public class Test10 {
	public static void main(String[] args) {		
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入本组学院的人数:");
		int count = scan.nextInt();
		//定义一个可变数组
		int[] number = new int[count];
		//输入成绩
		for(int i = 0 ; i < number.length; i++){
			System.out.println("请输入第"+(i+1)+"个学院的成绩");
			number[i] = scan.nextInt();
		}
		//排序
		int max = number[0];
		for(int i = 0; i < number.length ;i++ ){
			for(int j = i; j < number.length; j++){
				if( number[j] > number[i]){
					int temp = number[i];
					number[i] = number[j];
					number[j] = temp;
				}
				
			}			
		}
		for(int i = 0; i < number.length; i++){
			System.out.print(number[i]+" ");
		}
		
	}
}
 

第11题

案例:从键盘输入本组学员的人数,和本组学员的姓名,用数组存储姓名,然后再从键盘输入一个姓名,查找它是否在之前的数组中,如果存在,就显示它的下标。

代码实现:

import java.util.Scanner;

public class Test11 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入本组学院的人数:");
		int count = scan.nextInt();
		String[] names = new String[count];
		for(int i = 0; i < names.length; i++){
			System.out.println("请输入第"+(i+1)+"个学生的姓名:");			
			names[i] = scan.next();
		}
		System.out.println("请输入索要查找的姓名:");
		String isEm = scan.next();
		boolean flag = true;
		for(int i = 0; i < names.length ;i++){
			if(isEm.equals(names[i])){
				System.out.println("所查姓名的下标为:"+i);
				flag = false;
				break;
			}
		}
		if(flag){
			System.out.println("没有这个学生!");
		}
		 
	}

}

第12题

案例:从键盘输入一个英语单词,然后查找这个单词中是否存在'a'字

代码实现:

import java.util.Scanner;

public class Test12 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入一个单词:");
		String number = scan.next();
		char[] ch = number.toCharArray();
//		boolean flag = true;
		for(int i = 0; i < ch.length ;i++){
			if('a' == ch[i]){
				System.out.println(ch[i]+"存在");
				break;
			}else if(ch.length-1 == i){  //遍历完没找到代表不存在
				System.out.println("a不存在");
			}
		}
	}

}

第13题

随机验证码。

随机生成十组六位字符组成的验证码。

验证码由大小写字母、数字字符组成。

Java数组练习一(数组遍历控制)_第6张图片

代码实现:
 

import java.util.Random;

public class Test13 {
	public static void main(String[] args) {
		String[] str = new String[10];
		Random rand = new Random();
		
		for(int i = 0; i < 10; i++ ){
			str[i] = "";
			for(int j = 0; j < 6; j++){
				int num;
				while(true){
					num = rand.nextInt(123);
					if(num >= 48 && num <= 57){
						break;
					}else if(num >= 65 && num <= 90){
						break;
					}else if(num >= 97 && num <= 122){
						break;
					}
				}
				str[i] += (char)num;
			}
			System.out.println("随机验证码:"+str[i]);
			
			
		}
	}
}

第14题

数组去重

10个整数{9,10,6,6,1,9,3,5,6,4},范围1-10,保存到数组中。

去除数组中重复的内容,只保留唯一的元素。效果如图所示:

Java数组练习一(数组遍历控制)_第7张图片

代码实现:

public class Test14 {
	public static void main(String[] args) {
		int[] arr = {9,10,6,6,1,9,3,5,6,4};
		//1定义变量count,初始化为原数组的长度
		
		for(int i = 0; i < arr.length ; i++){
			System.out.print(arr[i]+" ");
		}
		int count = arr.length ;
		//2查找是否有重复的元素,并把后面的那个重复的元素覆盖,然后count--
		for(int i = 0; i < count ;i++){
			for(int j = i + 1; j < count ;j++){
				if(arr[i] == arr[j]){
					for(int k = j; k < count-1; k++){
						arr[k] = arr[k+1];
					}
					count --;
				}
			}
		}
		System.out.println();
		//3创建新数组
		int[] newArr = new int[count];
		for(int i = 0; i < count; i++){
			newArr[i] = arr[i];
		}
		//4复制元素,把arr的前面的count个元素复制到新数组中
		for(int i = 0; i < newArr.length ; i++){
			System.out.print(newArr[i]+" ");
		}
	}
}

第15题

使用二维数组打印一个 10 行杨辉三角.如图:

Java数组练习一(数组遍历控制)_第8张图片

代码实现:

public class Test15 {
	public static void main(String[] args) {
		int[][] arr = new int[10][];
		//初始化
		for(int i = 0;i < arr.length ; i++){
			arr[i] = new int[10];
			
		}
		//赋值
		for(int i = 0; i < arr.length ;i++){
			for(int j = 0; j < i+1 ; j++){
				if( j == 0 || i == j ){
					arr[i][j] = 1; 
				}else{
					arr[i][j] = arr[i-1][j]+arr[i-1][j-1];
				}
			}
		}
		
		//遍历
		for(int i = 0; i < arr.length ; i++){
			for(int j = 0; j < i + 1 ; j++){
				System.out.print(arr[i][j]+"\t");
			}
			System.out.println();
		}
	}
}

第16题

打印扑克牌,效果如图所示:

代码实现:

public class Test16 {
	public static void main(String[] args) {
		String[][] arr = new String[2][];
		
		arr[0] = new String[4];
		arr[1] = new String[13];
		
		arr[0][0] = "黑桃";
		arr[0][1] ="红桃";
		arr[0][2] = "梅花";
		arr[0][3] = "方片";
		
		arr[1][0] = "A";
		for(int i = 1; i < 10; i++){
			arr[1][i] = i+1+"";
		}
		arr[1][10] = "J";
		arr[1][11] = "Q";
		arr[1][12] = "K";
		
		for(int i = 0; i < arr[0].length ; i++){
			for(int j = 0; j < arr[1].length ;j++){
				System.out.print(arr[0][i]+arr[1][j]+" ");
			}
			System.out.println();
		}
	}
	
}

 

第17题

需求:保存全班的每个组的成绩,并对成绩做统计

  1. 从键盘输入一共有几组

  2. 从键盘输入每一组分别有多少人

  3. 从键盘输入每一个同学的成绩

  4. 统计每一组的最高分、最低分

  5. 统计每一组的平均分

  6. 统计全班的最高分、最低分

  7. 统计全班的平均分

  8. 统计全班的总人数

这个题稍微有点复杂,不过多想想就理清了。

实例如图:

Java数组练习一(数组遍历控制)_第9张图片Java数组练习一(数组遍历控制)_第10张图片

Java数组练习一(数组遍历控制)_第11张图片

代码实现:

import java.util.Scanner;

public class Test17 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入一共有几个组:");
		int club = scan.nextInt();
		int[][] people = new int[club][];
		for(int i = 0; i < club;i++){		
			System.out.println("请输入第"+(i+1)+"有多少人");
			people[i] = new int[scan.nextInt()];
			for(int j = 0; j < people[i].length ;j++){
				System.out.println("请输入"+(j+1)+"组员的成绩:");
				people[i][j] = scan.nextInt();
			}
		}
		System.out.println("-------------------------");
		//显示成绩表
		System.out.println("每组成绩如下:");
		for(int i = 0; i < people.length ; i++){
			System.out.println("第"+(i+1)+"组:");
			for(int j = 0; j < people[i].length ;j++){
				System.out.print(people[i][j]+"\t");			
			}
			System.out.println();
		}
		
		//计算每一组的最高分
		int max[] = new int[people.length ];
		//每一组的最低分
		int min[] = new int[people.length];
		//总成绩
		int Account = 0;
		//每一组平均分
		double avg[] = new double[people.length ];
		for(int i = 0; i < people.length ; i++){
			max[i] = people[i][0];
			min[i] = people[i][0];
			//avg[i] = people[i][0];
		}	
		//每一组人数
		int count[] = new int[people.length ];
		//找每一组最大值,最小值,个数,总成绩
		for(int i = 0; i < people.length ; i++){
			for(int j = 0; j < people[i].length;j++ ){
				if(max[i] < people[i][j]){
					max[i] = people[i][j];				
				}
				if(min[i] > people[i][j]){
					min[i] = people[i][j];
				}
				count[i] += people[i][j];
				Account += people[i][j];
				
			}
		}
		//总人数
		int countNumber = 0;
		for(int i = 0; i < count.length ; i++){
			avg[i] = ((int)((count[i]*1.0) / people[i].length)*100)/100*0.1 ;
			countNumber += people[i].length ;
		}	
		//总平均分
		double countAvge = 0.0;
		countAvge = ((int)((1.0*Account) / countNumber)*100)/100*0.1;
		int maxs = max[0];
		int mins = min[0];
		System.out.println("-------------------------");
		System.out.println("每组最高分,最低分:");
		//班级最高分,最低分
		for(int i = 0; i < max.length ; i++){
			System.out.println("第"+(i+1)+"组最高分:"+max[i]+",最低分:"+min[i]
					+",平均分:"+avg[i]);
			if(maxs < max[i]){
				maxs = max[i];
			}
			if(mins > min[i]){
				mins = min[i];
			}
			
		}
		System.out.println("全班最高分:"+maxs+",最低分:"+mins+
				",平均分:"+countAvge+",总人数:"+countNumber);
		
		
	}

}

关于简答题(包括一些基本语法,算法,查找,复制,反转,排序)会在下次分享,下次见。

对于学号编程还是得多写多练,才能熟练掌握,比如看一眼题就知道思路等等!

 

 

你可能感兴趣的:(数组)