Java0基础day12(基础语法练习:回文数,不死兔神,数组特定元素求和,裁判评分,数组反转,数组元素查找-索引位置,数据加密)

1.回文数:个位与万位相同,十位与千位相同,eg:12321

	判断回文数
		int count=0;
		for(int i=10000;i<=99999;i++){
			if((i%10==i/10/10/10/10%10)&&(i/10%10==i/10/10/10%10)){//用双与表达式,因为如果左边是false,则右边不执行,总结果直接为false,比较有效率,单与的话就两边都要执行,没有效率
				System.out.println(i+" ");
				count++;
			}
		}
		System.out.println("总共有:"+count+"个");

2.不死兔神:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对小兔子,假如兔子都不死,问第二十个月的兔子对有多少对?
 *         分析:第一个月1对
 *               第二个月1对
 *               第三个月1+1对
 *               第四个月1+1+1对
 *               第五个月1+1+1+1+1对
 *     关键:从出生后的那个月起算第一个月,所以实际只需要度过一个月,(即为到达第三个月,比如从第三月就有一对新生的【此时算为第一个月】,这对新生的再度过第四月后【此时算为第二个月】,到达在五月时【此时就是兔子长到第三个月】就可以生出一对),就能生兔子         
          规律:从第三个月起,每个月的对数是前两个月的相加和。(个人理解是,从第三个月起,只有前两个的对数可以生出对应对数的兔子,比如在第五个月时,只有第三个月的兔子对数可以全部再生,所以只需要在原有兔子基础上加上第三个月的兔子对数,即第四个月和第三个月兔子进行相加。)      
          使用数组索引进行对应数字进行相加即可。    

//	不死兔神问题
		int []arr = new int[20];//定义20个数据长度
		arr[0]=1;
		arr[1]=1;
		for(int i=2;i<arr.length;i++){
			arr[i]=arr[i-1]+arr[i-2];
		}
		System.out.println("第五个月的兔子对数为:"+arr[4]);//5
		System.out.println("第二十个月的兔子对数为:"+arr[19]);
		
	

3.数组求和:数组为{171,72,19,16,118,51,210,7,18},求和的元素的个位和十位不能包含7,并且只能为偶数        

	//特定数组求和问题
		int []arr={171,72,19,16,118,51,210,7,18};
		int sum=0;
		for(int i=0;i<arr.length;i++){
			if((arr[i]%10!=7)&&(arr[i]/10%10!=7)&&arr[i]%2==0){
				sum+=arr[i];
			}
		}
		System.out.println("特定数组的元素和为:"+sum);//362
		

4.评委评分:6个评委进行打分,分别是0-100的整数分,去掉最高分,去掉最低分,取剩下4个的平均分

//裁判评分问题
		int []arr=new int[6];
		Scanner sc=new Scanner(System.in);
		
		
		for(int i=0;i<arr.length;i++){
			System.out.println("请输入第"+(i+1)+"个评委的评分:");
			arr[i]=sc.nextInt();
		}
		求结果
		int sum=sum(arr);
		int max=getMax(arr);
		int min=getMin(arr);
		System.out.println("平均分为:"+(sum-max-min)/(arr.length-2));

		
		
		
	}
	
//		获取评委最高分
		public static int getMax(int []arr){//看这里的参数与103行的参数,虽然表明不一样,但是均可以正常使用
			int max=arr[0];
			for(int i=1;i<arr.length;i++){
				if(max<arr[i]){
					max=arr[i];
				}
			}
				return max;
		}
//		获取评委最低分
		public static int getMin(int arr[]){
			int min=arr[0];
			for(int i=1;i<arr.length;i++){
				if(min>arr[i]){
					min=arr[i];
				}
			}
				return min;
		}
	 	获取评委总分
		public static int sum(int arr[]){
			int sum=0;
			for(int i=0;i<arr.length;i++){
				sum+=arr[i];
			}
				return sum;
		}

5.数组反转:键盘录入五个int类型的数据存储到数组arr中,使用方法将数组内容进行反转,随后进行遍历打印。

import java.util.Scanner;

public class Two {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		int []arr=new int[6];
		
		Scanner sc=new Scanner(System.in);
		
		for(int i=0;i<arr.length;i++){
			System.out.println("请输入第"+(i+1)+"个数据:");
			arr[i]=sc.nextInt();
		}
		System.out.println("反转前的数组:");
		print(arr);
		reserve(arr);
		System.out.println("反转后的数组:");
		print(arr);
		
	}
//	遍历数组方法
	public static void print(int []arr){
		System.out.print("[");
		for(int i=0;i<arr.length;i++){
			if(i==arr.length-1){
				System.out.println(arr[i]+"]");
			}
			else{
			System.out.print(arr[i]+",");
		}
	}	
}
	
//	反转方法
	public static void reserve(int []arr){
		for(int start=0,end=arr.length-1;start<=end;start++,end--){//start<=end是关键
			int middle=arr[start];
			arr[start]=arr[end];
			arr[end]=middle;
		}
	}

}

数组反转图解

6.数组元素查找:给定数组元素{5,7,3,2,5},要查询的元素通过键盘录入的方式确定,定义一个查找数组元素第一次出现位置的方法


import java.util.Scanner;

public class Three {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int []arr={5,7,3,2,5};
		
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入要被查询的数据:");
		int num =sc.nextInt();
		int index=search(arr,num);
		System.out.println("索引为:"+index);
		
		
	}
		public static int search(int []arr,int value){
			for(int i=0;i<arr.length;i++){
				if(value==arr[i]){
					return i;
				}
			
			}
				   return -1;//表示找不到
		}

}

7.数据加密:键盘录入数据,要求数据是四位数的整数,需要对数据进行加密,加密规则如下:每位数字都加5,然后除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换
        请把加密后的数字输出到控制台

import java.util.Scanner;

public class Four {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		
		Scanner sc =new Scanner(System.in);
		System.out.println("请输入一个四位数:");
		int num=sc.nextInt();
//		将四位数拆开了
		int []arr=new int[4];
		arr[0]=num/10/10/10%10;
		arr[1]=num/10/10%10;
		arr[2]=num/10%10;
		arr[3]=num%10;
//		进行加密,每位数字加5,然后除以10的余数代替该数字
		for(int i=0;i<arr.length;i++){
			arr[i]+=5;
			arr[i]%=10;
		}
//		交换1,4和2,3位置
		int middle=arr[0];
		arr[0]=arr[3];
		arr[3]=middle;
		middle=arr[1];
		arr[1]=arr[2];
		arr[2]=middle;
//		打印数组
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]);
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值