Lesson_for_java_day07--练习--求因子、求个数和、位置倒置、升序排列、键盘循环输入数组

练习一:

/*
练习:
	练习1:
		通过键盘输入三个数字,分别打印这三个数字的因子

	练习2:
		输入一个整数,打印这个数各位数之和
		如 125 各位数之和为7

	练习3:
		输入一个整数,并将这个整数的各个位数倒置
		如12345倒置后的数字为54321
*/

import java.util.Scanner;
class Test01{
	public static void main(String[] args){
		//exercise1();
		//exercise2();
		exercise3();	
	}
	
	//键盘输入三个整数,求这三个整数的因子
	public static void exercise1(){
		int num1 =  inputInt();		
		int num2 =  inputInt();
		int num3 =  inputInt();
		sop(num1 + "的因子有:");
		printFactor(num1);
		sop(num2 + "的因子有:");
		printFactor(num2);
		sop(num3 + "的因子有:");
		printFactor(num3);
	}
	
	//输入一个整数,打印这个数各位数之和
	public static void exercise2(){
		int num = inputInt();
		int sum = sumUnit(num);
		sop("整数" + num + "各个位数之和为:" + sum);
	}
	
	//输入一个整数,并将这个整数的各个位数倒置
	public static void exercise3(){
		int num = inputInt();
		int reverseNum = numReverse(num);
		sop("整数" + num + "各位数位置倒置后为:" + reverseNum);
	}
		
	//整数各位数位置倒置
	public static int numReverse(int num){
		int reverse = 0;
		while(true){
			reverse = 10 * reverse + num%10;
			num = num / 10;
			if(num == 0) break;		
		}
		return reverse;
	}
	
	//计算一个整数各个位数之和
	public static int sumUnit(int num){
		int sum = 0;
		while(true){
			sum += num%10;
			num = num / 10;
			if(num == 0) break;		
		}
		return sum;
	}

	//键盘输入一个整数,并打印该整数的所以因子,
	public static void printFactor(int num){
		for(int i = 1; i <= num/2; i++){
			if(num % i == 0){
				sop(i + "是" + num + "因子");
			}
		}
	}
	
	//键盘中输入一个整数
	public static int inputInt(){
		Scanner input = new Scanner(System.in);
		sop("请输入一个整数:");
		return input.nextInt();	
	}
	
	//打印字符串
	public static void sop(String s){
		System.out.println(s);
	}
}

练习二:

/*
练习:
	练习1:
		升序排列数组,并求最大值、最小值、查询数组中的元素
		
	练习2:
		键盘循环输入数组元素,并排序打印
*/

import java.util.Scanner;
class Test02{
	public static void main(String[] args){
		upArray();
		//writeArray();

	}
	
	//升序排列数组
	public static void upArray(){
		int[] arr = new int[]{5,4,3,8,9,7,1,6,0,2};
		sop("排序前数组:");//排序前打印
		sopArray(arr);
		
		int max = arrayMax(arr);//数组中最大值
		sop("数组的最大值为:" + max + "\n");
		
		int min = arrayMin(arr);//数组中最小值
		sop("数组的最小值为:" + min + "\n");

		searchArray(arr,1);//查询数组是否包含某一元素
	
		sop("排序后数组:");//从小打大排序
		arraySort(arr);
		sopArray(arr);
	}
	
	//键盘循环输入数组,并排序打印
	public static void writeArray(){
		sop("请输入数组的长度:");
		int count = inputInt();//输入数组长度
		int[] arr = new int[count];//定义数组
		
		for(int i = 0; i < arr.length; i++){//输入数组元素
			sop("请输入第" + (i + 1 ) + "个数组元素:");
			arr[i] = inputInt();
		}
		sop("排序前数组:");//排序前打印
		sopArray(arr);
		sop("排序后数组:");//排序后打印
		arraySort(arr);
		sopArray(arr);	
	}
	
	//
	//查找数组中是否包含某一个元素
	public static void searchArray(int[] arr,int search){
		int index = -1;
		for(int i = 0; i < arr.length; i++){//查询是否包含元素,返回下标值
			if(arr[i] == search) {
				index = i;
				break;
			}
		}
		if(index == -1){//判断是否找到查找的元素
			sop("数组中没有" + search + "这个元素\n");
		}
		else{
			sop("数组中" + search + "是在第" + (index + 1) + "个元素\n");
		}
	}
	
	//查找数组中的最大值
	public static int arrayMax(int[] arr){
		int max = arr[0];
		for(int i = 0; i < arr.length; i++){
			if(max < arr[i]) max = arr[i];
		}
		return max;
	}
	
	//查找数组中的最小值
	public static int arrayMin(int[] arr){
		int min = arr[0];
		for(int i = 0; i < arr.length; i++){
			if(min > arr[i]) min = arr[i];
		}
		return min;
	}
	
	//数组的冒泡排序(从小到大)
	public static void arraySort(int[] arr){
		int a;
		for(int i = 0; i < arr.length; i++){
			for(int j = 0; j < arr.length - i-1; j++){
				if(arr[j] > arr[j + 1]){
					a = arr[j+1];
					arr[j+1] = arr[j];
					arr[j] = a;
				}
			}
		}
	}
	
	//打印数组
	public static void sopArray(int[] arr){
		sop("[");
		for(int i = 0; i < arr.length; i++){
			if(i == arr.length - 1)
				sop(arr[i] + "]");
			else 
				sop(arr[i] + ",");
		}
		sop("\n");
	}
	
	//键盘中输入一个整数
	public static int inputInt(){
		Scanner input = new Scanner(System.in);
		return input.nextInt();	
	}
	
	//打印字符串
	public static void sop(String s){
		System.out.print(s);
	}
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值