Java基础练习题(数组)1

package 日期20210804;

import java.util.Arrays;
import java.util.Scanner;
import org.junit.Test;

public class C3 {
	
    @Test
	public void test1(){
		
		/*
		int[] arr = new int[4]; //创建动态数组
		//数组元素赋值
		arr[0] = 1;
		arr[1] = 2;
		arr[2] = 3;
		arr[3] = 4;
		System.out.println(arr[1]);

		int[][] arr1 = {{1, 2}, {3, 4}, {5, 6}};//创建静态数组
		System.out.println(arr1[1][0]);
		*/
		
		//创建静态数组
		String[] cities={"北京","上海","杭州","深圳"};
		//创建动态数组
		String[] cityarr=new String[4];
		//给数组元素赋值
		cityarr[0]="北京";
		cityarr[2]="杭州";
		cityarr[3]="深圳";
		//获取数组元素
		System.out.println(cities[2]);
		System.out.println(cityarr[3]);
		
		int cnt=cities.length;//获取数组元素的个数
		System.out.println("cities数组中保存的元素个数:"+cnt);
		System.out.println();
		
		for(int i=0; i<cityarr.length; i++){
			System.out.println(cityarr[i]);
		}
	}
	
	@Test
	public void test2(){
		//动态定义数组
		//double[] salayArr = new double[6];
		double[] salayArr = {0,0,0,0,0,0,0};
		double totle = 0; //总工资
		double avg = 0; //平均工资
		for(int i=0; i<6; i++) {
			System.out.print("请输入第"+(i+1)+"名员工的工资:");
			double salay = new Scanner(System.in).nextDouble();
			salayArr[i] = salay; //将输入的工资存到相应的数组元素中
		}
		for(int i=0; i<salayArr.length; i++) {
			System.out.println("请输入第"+(i+1)+"名员工的工资:"+salayArr[i]);
			totle = totle + salayArr[i]; // totle += salayArr[i]
		}
		avg = totle / salayArr.length; //通过数组的length属性获得数组元素的数量
		System.out.println("总工资:"+totle);
		System.out.println("平均工资:"+avg);
	}
	
	@Test
	public void test3() {
		int []arr = {56,34,78,2,0,18};
		int sum = 0;
		for(int i = 0;i<arr.length;i++){
			System.out.println(arr[i]);
			sum +=arr[i];
		}
		System.out.println(sum);
	}
	
	@Test
	public void test4() {
		System.out.println("请输入地名");
		String[] cities = {"北京","上海","杭州","深圳"};
		String name = new Scanner(System.in).next();
		
		for(int i = 0;i < cities.length;i ++){
			//System.out.println(cities[i]);
			
			if(name.equals(cities[i])){
				
				System.out.println("地名数据库中存在" + name);
			}
			
		}
		System.out.println("完成");
		
	}
	
	@Test
	public void test5(){
		int[] arr = {58,34,78,2,1,18};
		Arrays.sort(arr);//给数组元素排序,排序方法,顺序(从小到大)
		for(int i=0;i<arr.length;i++){
			System.out.println(arr[i]+",");
		}
		System.out.println("最小值:"+arr[arr.length-6]);
		System.out.println("最大值:"+arr[arr.length-1]);
		
	}
	
	@Test
	public void test6(){
		int[] arr = {58,34,78,2,1,18};
		Arrays.sort(arr);//给数组元素排序,排序方法,顺序(从小到大)
		for(int i=0;i<arr.length;i++){
			System.out.println(arr[arr.length-i-1]+",");//从大到小输出
		}
		System.out.println("最小值:"+arr[arr.length-6]);
		System.out.println("最大值:"+arr[arr.length-1]);
		
		String s = Arrays.toString(arr);//将数组转换为字符串
		System.out.println(s);
	}
    
	@Test
	/**1.	
	输入10个个位整数,去掉重复数字,并由大到小排序
	*/
	public void test7(){
		Scanner c = new Scanner(System.in);
		int [] arr = new int [10];
		
		for(int i=0;i<arr.length;i++){
			System.out.print("请输入第"+(i+1)+"数字:");
			arr[i] = c.nextInt();//将输入的成绩存到数组元素
			
		}
		Arrays.sort(arr);//从小到大排序
		System.out.println(Arrays.toString(arr));
		System.out.println();
		
		//用来记录去除重复之后的数组长度和给临时数组作为下标索引  
		int t = 0;  
		//临时数组  
		Object[] temparr = new Object[arr.length];  
		//遍历原数组  
		for(int i = 0; i < arr.length; i++){  
		//声明一个标记,并每次重置  
			boolean isTrue = true;  
			//内层循环将原数组的元素逐个对比  
			for(int j=i+1;j<arr.length;j++){  
			//如果发现有重复元素,改变标记状态并结束当次内层循环  
		     	if(arr[i]==arr[j]){  
		     		isTrue = false;  
		     		break;  
		     	}  
			}  
			//判断标记是否被改变,如果没被改变就是没有重复元素  
			if(isTrue){  
		   	//没有元素就将原数组的元素赋给临时数组  
				temparr[t] = arr[i];  
				//走到这里证明当前元素没有重复,那么记录自增  
		     	t++;  
		   	}  
		}  
		//声明需要返回的数组,这个才是去重后的数组  
		Object[] newarr = new Object[t];  
		
		//用arraycopy方法将刚才去重的数组拷贝到新数组并返回  
		System.arraycopy(temparr,0,newarr,0,t);  
		Arrays.sort(newarr);//从小到大排序
		
		for(int i=0;i<newarr.length;i++){
			System.out.print(newarr[newarr.length-i-1]+",");//从大到小输出
		}
		System.out.println(Arrays.toString(newarr));
		System.out.println();
	
		
	}
	
	@Test
	/*2.	
	有两个整数型数组,长度相同,输入数组各项,完成输入后,
	判断两个数组的每个数组位置的值是否相同,如果都相同,
	则输出true,反之则输出false
	*/
	public void test8(){
		Scanner sc = new Scanner(System.in);
		int[] arr1 = new int[3];
		int[] arr2 = new int[arr1.length];
		int x = 0;
		for(int j = 0;j < arr1.length;j++){
			System.out.print("请输入第一个数组元素:");
			arr1[j] =sc.nextInt();
		}
		System.out.println("第一个数组:"+Arrays.toString(arr1));
		for(int i = 0;i < arr2.length;i++){
			System.out.print("请输入第二个数组元素:");
			arr2[i] =sc.nextInt();
		}
		System.out.println("第二个数组:"+Arrays.toString(arr2));
		for(int i = 0;i < arr1.length;i++){
			
			if(arr1[i]==arr2[i]){
				x++;
			}else if(x == arr1.length){
				
				break;
			}
		}
		
		if(x == arr1.length){
			System.out.println("true");
		}else{
			System.out.println("false");
		}		
		
	}
	
	@Test
	/**3.	
	手动输入一个长度为10的数组,
	判断数组中是否存在四个连续相等的数值,
	如果存在则输出true,反之输出false
	*/
	public void test9(){
		Scanner sc = new Scanner(System.in);
		int x=0;
		int[] arr=new int[10];
		
		for(int i=0;i<arr.length;i++){
			System.out.print("输入第"+i+"个数字:");
			arr[i]=sc.nextInt();
			
		}
		for(int i=1;i<arr.length;i++){
			if(arr[i]==arr[i-1]){
				x++;
			}
			
			if(x==3){
				break;
			}
		}
		
		if(x==3){
			System.out.println(true);
	   
		}else{
			System.out.println(false);
		}
	}
	
	@Test
	/*4.
	
	手动输入两个数组,将两个数组整合成为一个数组,并由大到小进行排序
	*/
	public void test10(){
		Scanner sc = new Scanner(System.in);
		int[] arr1 = new int[3];
		int[] arr2 = new int[arr1.length];
		
		for(int j = 0;j < arr1.length;j++){
			System.out.print("请输入第一个数组元素:");
			arr1[j] =sc.nextInt();
		}
		System.out.println("第一个数组:"+Arrays.toString(arr1));
		for(int i = 0;i < arr2.length;i++){
			System.out.print("请输入第二个数组元素:");
			arr2[i] =sc.nextInt();
		}
		System.out.println("第二个数组:"+Arrays.toString(arr2));
		int[] arr3 = new int[arr1.length+arr2.length];
		for(int i = 0;i<arr1.length;i++){
			arr3[i]=arr1[i];
		}
		for(int j=0;j<arr2.length;j++){
			arr3[arr1.length+j]=arr2[j];
		}
		System.out.println("第三个数组:"+Arrays.toString(arr3));
	}
	
	
	
	
	
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值