Java基础巩固Day5作业

一、基础案例

题目1

定义一个方法 能接受一个整数(这个整数大于3)打印0到这个整数(包含)之间的所有的偶数
如 接受的数字是6则调用完方法打印出来的偶数是 0 2 4 6
如 接受的数字是 5则调用完方法打印出来的偶数是 0 2 4

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//1.1
		printEvenNumber(6);
	}
	public static void printEvenNumber(int num) {
		for(int i=0; i<num+1;i++) {
			if(i%2 ==0) {
				System.out.print(i+" ");
			}
		}
		System.out.println();
	}

题目2

随机产生两个整数,随机数的范围均是[1,100],定义方法求这两个整数的和并打印和值。

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Random r=new Random();
		int a = r.nextInt(100)+1;
		int b = r.nextInt(100)+1;
		int sum = sum(a,b);
		System.out.println("两个随机数的值是:"+sum);
		
	}
	public static int sum(int a, int b) {
		return a+b;
	}

题目3

主方法中给定数组int[] arr= {10,20,30,40,50,60};定义一个方法可以接受这个给定的数组
并返回这个数组中元素的最小值

	public static void main(String[] args) {
		int[] arr= {10,20,30,40,50,60};
		int min = findMinValue(arr);
		System.out.println("min:"+min);public static int findMinValue(int[] arr) {
		int min = arr[0];
		for(int i=1;i<arr.length;i++) {
			if(arr[i]<min) {
				min = arr[i];
			}
		}
		return min;
	}

题目4

有定义一个方法,可以接受一个整数,
如果为[90,100]这个范围方法返回’A’
如果为[80,90)这个范围方法返回’B’
如果为[70,80)这个范围方法返回’C’
如果为[60,70)这个范围方法返回’D’
如果为[0,60)这个范围方法返回’E’
整数不在以上范围的返回’F’

	public static void main(String[] args) {
			Scanner sc = new Scanner(System.in);
		System.out.println("请输入0-100的整数:");
		int num = sc.nextInt();
		String n = judgeNumber(num);
		System.out.println(n);
		
	}
	public static String judgeNumber(int num) {
		if(num>=90 && num<=100) {
			return "A";
		}else if(num>=80 && num<90) {
			return "B";
		}else if(num>=70 && num<80) {
			return "C";
		}else if(num>=60 && num<70) {
			return "D";
		}else if(num>=0 && num<60) {
			return "E";
		}else {
			return "F";
		}
	}

题目5

定义一个方法,求出给定的数字在给定int型数组中出现的次数,如果一次没有出现则返回0。
如:给定数字3 求出3在数组 int[] arr = {3,4,3,5,7,9};中出现的次数

	public static void main(String[] args) {
		int[] arr = {3,4,3,5,7,9};
		int num =3;
		int count = count(num,arr);
		System.out.println(num+"在数组arr中出现了"+count+"次");
	}
	public static int count(int num,int[]arr) {
		int count =0;
		for(int e:arr) {
			if(num == e) {
				count++;
			}
		}
		return count;
		
	}

题目6

定义一个方法,查找指定数字在数组中出现的位置(若出现多次,多次打印)
如: 数组[1232]要查找的数是2 则方法内部会打印索引值 1 ,3
数组[1232] 要查找的数是5 则方法每部会打印 “数组中没有这个数字”

	public static void main(String[] args) {
		int[] arr= {1,2,3,2};
		findElementCount(5, arr);
	}
	public static void findElementCount(int e,int[] arr) {
		int count =0;
		for(int i=0;i<arr.length;i++) {
			if(arr[i] == e) {
				count++;
				System.out.print(i+" ");
			}
			if(count!=0 && i == arr.length-1) {
				System.out.println();
			}
		}
		if(count == 0) {
			System.out.println("数组中没有这个数字");
		}
		
	}

题目7

定义一个方法,实现同时求出两个整数的加、减、乘、除的结果,并同时把这个四个结果返回(把四个数放入到一个数组中并返回)

	public static void main(String[] args) {
		int[] result = caculate(8,2);
		for(int e:result) {
			System.out.print(e+" ");
		}public static int[] caculate(int a,int b) {
		int[] result = new int[4];
		int add = a+b;
		result[0] = add;
		int subtraction = a-b;
		result[1]=subtraction;
		int multiply = a*b;
		result[2] = multiply;
		int division = a/b;
		result[3] =division;
		return result;
	}

二、扩展案例

题目1

主方法中给定数组int[] arr= {10,20,30,40,50,60};这个数组没有重复元素.定义一个方法可以接受这个给定的数组并返回这个数组中最大元素值的索引值

	public static void main(String[] args) {
		int[] arr= {10,20,30,40,50,60};
		int index =findMaxValue(arr);
		System.out.println("数组arr最大值的索引是:"+index);
	}
	public static int findMaxValue(int[] arr) {
		int max = 0;
		for(int i=1;i<arr.length;i++) {
			if(arr[i]>arr[max]) {
				max = i;
			}
		}
		return max;
	}

题目2

分析以下需求,并用代码实现
1.键盘录入长方形的长和宽
定义方法计算该长方形的周长,并在main方法中打印周长
2.键盘录入长方形的长和宽
定义方法计算该长方形的面积,并在main方法中打印面积
3.键盘录入圆的半径
定义方法计算该圆的周长,并在main方法中打印周长
4.键盘录入圆的半径
定义方法计算该圆的面积,并在main方法中打印面积

	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入长方形的长和宽计算该长方形的周长:");
		int a = sc.nextInt();
		int b=sc.nextInt();
		System.out.println("长方形周长为:"+rectanglePerimeter(a, b));
		System.out.println("请输入长方形的长和宽计算该长方形的面积:");
		int c = sc.nextInt();
		int d=sc.nextInt();
		System.out.println("长方形面积为:"+rectangleArea(a, b));
		System.out.println("----------------------------------------");
		System.out.println("请输入圆形的半径计算该圆形的周长:");
		int r1 = sc.nextInt();
		System.out.println("圆形周长为:"+circlePerimeter(r1));
		System.out.println("请输入圆的半径计算该圆形的面积:");
		int r2 = sc.nextInt();
		System.out.println("圆形面积为:"+circleArea(r2));
	}
	public static int rectangleArea(int a, int b) {
		return a*b;
	}
	public static int rectanglePerimeter(int a, int b) {
		return (a+b)*2;
	}
	public static double circleArea(int r) {
		return 3.14*r*r;
	}
	public static double circlePerimeter(int r) {
		return 2*3.14*r;
	}

题目3

分析以下需求,并用代码实现
1.定义一个方法equals(int[] arr1,int[] arr2),功能:比较两个数组是否相等(长度和内容均相等则认为两个数组是相同的)
2.定义一个方法fill(int[] arr,int value),功能:将数组arr中的所有元素的值改为value
3.定义一个方法fill(int[] arr,int fromIndex,int toIndex,int value),功能:将数组arr中的元素从索引fromIndex开始到toIndex(不包含toIndex)对应的值改为value
4.定义一个方法copyOf(int[] arr, int newLength),功能:将数组arr中的newLength个元素拷贝到新数组中,并将新数组返回,从索引为0开始
5.定义一个方法copyOfRange(int[] arr,int from, int to),功能:将数组arr中从索引from(包含from)开始到索引to结束(不包含to)的元素复制到新数组中,并将新数组返回

	public static boolean equals(int[] arr1,int[] arr2) {
		if(arr1.length != arr2.length) {
			return false;
		}
		for(int i =0;i<arr1.length;i++) {
			if(arr1[i] != arr2[i]) {
				return false;
			}
		}
		return true;
	}
	public static void fill(int[] arr,int value) {
		for(int i=0;i<arr.length;i++) {
			arr[i]=value;
		}
	}
	public static void fill(int[] arr,int fromIndex,int toIndex,int value) {
		for(int i=fromIndex;i<toIndex;i++) {
			arr[i]=value;
		}
	}
	public static int[] copyOf(int[] arr, int newLength) {
		int[] newArr = new int[newLength];
		for(int i=0;i<newLength;i++) {
			newArr[i] = arr[i];
		}
		return newArr;
	}
	public static int[] copyOfRange(int[] arr,int from, int to) {
		int[] newArr = new int[to-from];
		for(int i=from;i<to;i++) {
			newArr[i] = arr[i];
		}
		return newArr;
	}

题目4

定义一个方法,去打印指定两个年份之间所有的闰年年份
如:将2000和2005传入方法,方法执行完毕会打印出这段之间的所有闰年年份
2000和2004
提示:
计算公历年闰年的算法: 四年一闰,百年不闰,四百年再闰
翻译:
满足如下任意一条即是闰年
1)年份是整百数的必须是400的倍数才是闰年(能被100整除并且能被400整除)
2)其他年份能被4的是闰年
实例: 2000 是整百数,并且是400的倍数所以是闰年; 2004年是4的倍数是闰年
2100 是整百的倍数但不是400的倍数,所以不是闰年

	public static void main(String[] args){
		int a =2000;
		int b=2008;
		String years = judgeYear(a,b);
		System.out.println("在"+a+"年到"+b+"年之间的闰年有:"+years);
	}
	public static String judgeYear(int a,int b) {
		String year="";
		for(int i=a;i<=b;i++) {
			if(i%100 ==0) {
				if(i%4==0) {
					year=year+i+" ";
				}
			}else if(i%4==0) {
				year=year+i+" ";
			}
		}
		return year;
	}

题目5

1.键盘录入一个整数(正数或者负数都可以,但是符号位不算有效的数字位)
2.定义一个方法,该方法的功能是计算该数字是几位数字,并将位数返回
3.在main方法中打印该数字是几位数
4.演示格式如下:
(1)演示一:
请输入一个整数:1234
控制台输出:1234是4位数字
(2)演示二:
请输入一个整数:-34567
控制台输出:-34567是5位数字

	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入一个整数:");
		int num = sc.nextInt();
		System.out.println(num+"是"+digitNum(num)+"位数字");
	}
	public static int digitNum(int num) {
		int count =0;
		while(num>=1) {
			num=num/10;
			count++;
		}
		return count;
	}

题目6

分析以下需求,并用代码实现(每个小需求都需要封装成方法)
1.求两个数据之和(整数和小数)
2.判断两个数据是否相等(整数和小数)
3.获取两个数中较大的值(整数和小数)
4.获取两个数中较小的值(整数和小数)
5.否能用一个方法实现3和4的两个功能

	//1.
	public static int sum(int a, int b) {
		return a+b;
	}
	public static double sum(double a, double b) {
		return a+b;
	}
	//2.
	public static boolean isEqual(int a, int b) {
		return a==b;
	}
	public static boolean isEqual(double a, double b) {
		return a==b;
	}
	//3.
	public static int max(int a, int b) {
		if(a>b) {
			return a;
		}else{
			return b;
		}
	}
	public static double max(double a, double b) {
		if(a>b) {
			return a;
		}else{
			return b;
		}
	}
	//4.
	public static int min(int a, int b) {
		if(a<b) {
			return a;
		}else{
			return b;
		}
	}
	public static double min(double a, double b) {
		if(a<b) {
			return a;
		}else{
			return b;
		}
	}
	//5.
	public static int findMaxMinInNumbers(int a, int b,boolean flag) {
		//flag为true时找极大值,flag为false时找极小值
		if(flag) {
			if(a>b) {
				return a;
			}else{
				return b;
			}
		}else {
			if(a<b) {
				return a;
			}else{
				return b;
			}
		}
	}
	public static double findMaxMinInNumbers(double a, double b,boolean flag) {
		//flag为true时找极大值,flag为false时找极小值
		if(flag) {
			if(a>b) {
				return a;
			}else{
				return b;
			}
		}else {
			if(a<b) {
				return a;
			}else{
				return b;
			}
		}
	}

题目7

定义一个方法传入一个int类型数组,输出这个数组中每一个数字及其出现的个数
例如 传入数组[1,2,2,2,3,3,4,4,4,4] 打印结果:
数字1出现了1次
数字2出现了3次…

	public static void main(String[] args){
		int[] arr = {4,2,6,3,1,2,2,2,3,4,4,4};
		countArr(arr);
	}
	public static void countArr(int[] arr) {
		for(int i=0;i<arr.length-1;i++) {
			for(int j=0;j<arr.length-i-1;j++) {
				if(arr[j]>arr[j+1]) {
					int t = arr[j];
					arr[j]=arr[j+1];
					arr[j+1] = t;
				}
			}
		}
		for(int i=0;i<arr.length;i++) {
			if(i>0 && arr[i]==arr[i-1]) {
				continue;
			}
			int count = 1;
			for(int j=i+1;j<arr.length;j++) {
				if(arr[i] == arr[j]) {
					count++;
				}
			}
			System.out.println("数字"+arr[i]+"出现了"+count+"次");
		}
	}

题目8

分析以下需求,并用代码实现
1.创建两个长度为10的数组,数组内元素为随机生成的、不重复的 1-100之间的整数。
2.定义一个方法,传入两个数组,方法中将两个数组不同的元素拼接成一个字符串,并且将该字符串以及字符串的长度输出到控制台上;
如果没有则输出"对不起两个数组的所有元素均相同"

	public static void main(String[] args){
		int[] arr1 = new int[10];
		int[] arr2 = new int[10];
		addE(arr1);
		addE(arr2);
		arrsToString(arr1,arr2);
	}
	public static void addE(int[] arr) {
		Random r = new Random();
		for(int i=0;i<arr.length;i++) {
			arr[i]=r.nextInt(100)+1;
		}
	}
	public static void arrsToString(int[] a, int[] b) {
		String result = "";
		int count=0;
		for(int i=0;i<a.length;i++) {
			boolean flag1 = false;
			for(int j=0;j<b.length;j++) {
				if(a[i]==b[j]) {
					flag1=true;
				}
			}
			if(!flag1) {
				result=result+a[i]+" ";
				count++;
			}
		}
		for(int i=0;i<b.length;i++) {
			boolean flag2 = false;
			for(int j=0;j<a.length;j++) {
				if(b[i]==a[j]) {
					flag2=true;
				}
			}
			if(!flag2) {
				result=result+b[i]+" ";
				count++;
			}
		}
		if(count == 0) {
			System.out.println("对不起两个数组的所有元素均相同!");
		}else {
			System.out.println("两个数组组成的字符串为:"+result);
			System.out.println("该字符串的长度为:"+count);
		}
	}
		


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值