文章目录
- 一、 基础案例
- 二、 扩展案例
- 1. 训练案例1
- 2. 训练案例2
- 3. 训练案例3
- 3.1 定义一个方法equals(int[] arr1,int[] arr2),功能:比较两个数组是否相等
- 3.2 定义一个方法fill(int[] arr,int value),功能:将数组arr中的所有元素的值改为value
- 3.3将数组arr中的元素从索引fromIndex开始到toIndex(不包含toIndex)对应的值改为value
- 3.4 将数组arr中的newLength个元素拷贝到新数组中,并将新数组返回,从索引为0开始
- 3.5 将数组arr中从索引from(包含from)开始到索引to结束(不包含to)的元素复制到新数组中,并将新数组返回
- 4. 训练案例4
- 5. 训练案例5
- 6. 训练案例6
- 7. 训练案例7
一、 基础案例
1. 训练案例1
1.1. 训练描述
定义一个方法 能接受一个整数(这个整数大于3)打印0到这个整数(包含)之间的所有的偶数
如 接受的数字是6则调用完方法打印出来的偶数是 0 2 4 6
如 接受的数字是 5则调用完方法打印出来的偶数是 0 2 4
1.2. 操作步骤描述
1.创建一个测试类,在测试类中创建上述方法
2.定义一个无返回值,有参数的方法
3.在方法内部把符合条件的数字打印
4.在主方法中调用这个方法,并传入数字15进行测试
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
System.out.println("一个整数(这个整数大于3):");
Scanner input = new Scanner(System.in);
int a = input.nextInt();
print(a);
}
public static void print(int x){
for (int i = 0; i <= x; i++) {
if(i % 2 ==0){
System.out.print(i + " ");
}
}
}
}
2. 训练案例2
2.1. 训练描述
随机产生两个整数,随机数的范围均是[1,100],定义方法求这两个整数的和并打印和值
2.2. 操作步骤描述
1.创建一个测试类
2.在主方法中使用Random产生两个范围是[1,100]的随机数
3.定义一个求两个整数和的方法
4.在主方法中调用这个求和方法得到结果值,并打印
import java.util.Random;
public class Test02 {
public static void main(String[] args) {
Random r = new Random();
int a = r.nextInt(100)+1;
int b = r.nextInt(100)+1;
sum02(a,b);
}
public static void sum02(int x,int y){
System.out.println("两个整数:"+x+" "+y+",和为:"+(x +y));
}
}
3. 训练案例3
3.1. 训练描述
主方法中给定数组int[] arr= {10,20,30,40,50,60};定义一个方法可以接受这个给定的数组
并返回这个数组中元素的最小值
3.2. 操作步骤描述
1.创建一个测试类,在测试类中写该方法
2.定义一个方法可以接收一个整型的一维数组
3.在方法内部求出数组元素的最小值,并把这个最小值返回
4.在主方法中调用上述方法传递数组arr,得到数组中元素的最小值并打印
public class Test03 {
public static void main(String[] args) {
int[] arr= {10,20,30,40,50,60};
int a = min03(arr);
System.out.println("数组中元素的最小值"+a);
}
public static int min03(int[] ar){
int min = 100;
for (int i = 0; i < ar.length; i++) {
min = min<ar[i] ? min :ar[i];
}
return min;
}
}
4. 训练案例4
4.1. 训练描述
有定义一个方法,可以接受一个整数,
如果为[90,100]这个范围方法返回’A’
如果为[80,90)这个范围方法返回’B’
如果为[70,80)这个范围方法返回’C’
如果为[60,70)这个范围方法返回’D’
如果为[0,60)这个范围方法返回’E’
整数不在以上范围的返回’F’
4.2. 操作步骤描述
1.创建一个测试类
2.定义个方法根据传递进来的数字返回对应的字母
3.在主方法中使用键盘录入一个整数,调用这个方法得到这个整数对应的字母并打印
import java.util.Scanner;
public class Test04 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("录入一个整数");
int a = input.nextInt();
char b = print04(a);
System.out.println(a+"数字返回对应的字母:"+b);
}
public static char print04(int x) {
if (x <= 100 & x >= 90) {
return 'A';
} else if (x < 90 & x >= 80) {
return 'B';
} else if (x < 80 & x >= 70) {
return 'C';
} else if (x < 70 & x >= 60) {
return 'D';
} else if (x < 60 & x >= 0) {
return 'E';
} else {
return 'F';
}
}
}
5. 训练案例5
5.1. 训练描述
定义一个方法,求出给定的数字在给定int型数组中出现的次数,如果一次没有出现则返回0。
如:给定数字3 求出3在数组 int[] arr = {3,4,3,5,7,9};中出现的次数
5.2. 操作步骤描述
1.创建一个测试类
2.定义个方法可以接受一个int数字key和int型数组arr
3.在方法的内部统计key在arr中出现的次数(即统计arr中有多少个元素与key相等)
4.在主方法中调用这个方法传入一个数字,一个数组,得到数组的返回结果并打印
public class Test05 {
public static void main(String[] args) {
int[] arr = {3,4,3,5,7,9};
int keyy=100;
int sum =same(keyy,arr);
System.out.println("数组中"+keyy+"的个数有:"+sum);
}
public static int same(int key,int[] ar){
int sum=0;
for (int i = 0; i < ar.length; i++) {
if(ar[i]==key){
sum++;
}
}
return sum;
}
}
6. 训练案例6
6.1. 训练描述
定义一个方法,查找指定数字在数组中出现的位置(若出现多次,多次打印)
如: 数组[1232]要查找的数是2 则方法内部会打印索引值 1 ,3
数组[1232] 要查找的数是5 则方法每部会打印 “数组中没有这个数字”
6.2. 操作步骤描述
1.创建一个测试类,在测试类中书写上述代码
2.定义方法可以接受一个int[] brr和一个int key
3.在方法中定义标记 int count = 0 ;
4.方法中遍历brr 对每个元素进行判断是否等于key,如果等于就打印索引值,并count++
5.遍历brr完毕之后 判断count的值,如果还为默认值0,则表示brr中没有key,直接打印”数组中没有这个数字”
6.在主方法中传入数组 arr 和数字 2 或者5 进行测试
public class Test06 {
public static void main(String[] args) {
int[] arr = {1,2,3,2,};
int keyy=2;
same(keyy,arr);
}
public static int same(int key,int[] ar){
int sum=0;
for (int i = 0; i < ar.length; i++) {
if(ar[i]==key){
sum++;
}
}
if(sum==0){
System.out.print("数组中没有这个数字");
return sum;
}
sum =0;
System.out.print(key +"索引值:");
for (int i = 0; i < ar.length; i++) {
if(ar[i]==key){
sum++;
System.out.print(i+" ");
}
}
return sum;
}
}
7. 训练案例7
7.1. 训练描述
定义一个方法,实现同时求出两个整数的加、减、乘、除的结果,并同时把这个四个结果返回(把四个数放入到一个数组中并返回)
7.2. 操作步骤描述
public class Test07 {
public static void main(String[] args) {
int a = 5;
int b = 10;
int[] rrr =arr(a,b);
System.out.print("两个整数的加、减、乘、除的结果:");
for (int i = 0; i < rrr.length; i++) {
System.out.print(rrr[i]+",");
}
}
public static int[] arr(int x,int y){
int[] ar =new int[4];
ar[0] = x + y;
ar[1] = x - y;
ar[2] = x * y;
ar[3] = x / y;
return ar;
}
}
二、 扩展案例
1. 训练案例1
1.1. 训练描述
主方法中给定数组int[] arr= {10,20,30,40,50,60};这个数组没有重复元素.定义一个方法可以接受这个给定的数组并返回这个数组中最大元素值的索引值
public class TZ01 {
public static void main(String[] args) {
int[] arr= {10,20,30,40,50,60};
int a = indexx(arr);
System.out.println("数组中最大元素值的索引值:"+a);
}
public static int indexx(int[] arr){
int max = 0;
int k = 0;
for (int i = 0; i < arr.length; i++) {
if(max<=arr[i]){
max = arr[i];
}
}
for (int j = 0; j < arr.length; j++) {
if(max==arr[j]){
k = j;
return k;
}
}
return k;
}
}
2. 训练案例2
2.1. 训练描述
分析以下需求,并用代码实现
1.键盘录入长方形的长和宽
定义方法计算该长方形的周长,并在main方法中打印周长
2.键盘录入长方形的长和宽
定义方法计算该长方形的面积,并在main方法中打印面积
3.键盘录入圆的半径
定义方法计算该圆的周长,并在main方法中打印周长
4.键盘录入圆的半径
定义方法计算该圆的面积,并在main方法中打印面积
import java.util.Scanner;
public class TZ02 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("求长方形的周长输入1");
System.out.println("求长方形的面积输入2");
System.out.println("求圆的周长输入3");
System.out.println("求圆的周长输入4");
int a = input.nextInt();
switch (a) {
case 1:
System.out.println("请输入长方形的长");
int long1 = input.nextInt();
System.out.println("请输入长方形的宽");
int wide1 = input.nextInt();
System.out.println("长方形的周长"+girth(long1,wide1));
break;
case 2:
System.out.println("请输入长方形的长");
int long2 = input.nextInt();
System.out.println("请输入长方形的宽");
int wide2 = input.nextInt();
break;
case 3:
System.out.println("请输入圆的半径");
int r1 = input.nextInt();
System.out.println("圆的周长"+girth(r1));
break;
case 4:
System.out.println("请输入圆的半径");
int r2 = input.nextInt();
System.out.println("圆的面积"+area(r2));
break;
default:
break;
}
}
public static int girth(int x,int y){
int g = (x+y)*2;
return g;
}
public static int area(int x,int y){
int g = (x*y);
return g;
}
public static int girth(int x){
int g = (int) (2*x*(Math.PI));
return g;
}
public static int area(int x){
int g = (int) (x*x*(Math.PI));
return g;
}
}
3. 训练案例3
3.1. 训练描述
分析以下需求,并用代码实现
3.1 定义一个方法equals(int[] arr1,int[] arr2),功能:比较两个数组是否相等
(长度和内容均相等则认为两个数组是相同的)
public class TZ031 {
public static void main(String[] args) {
int[] ar1 ={5,5,7,8,7};
int[] ar2 ={5,7,5,7,8};
equals(ar1,ar2);
}
public static void equals(int[] arr1,int[] arr2){
int count = 0;
int count1 = 0;
int count2 = 0;
if(arr1.length != arr2.length){
System.out.println("两个数组是不相同的");
System.exit(0);
}
for (int i = 0; i < arr2.length; i++) {
am:for (int j = 0; j < arr2.length; j++) {
if(arr1[i]==arr2[j]){
count++;
for (int i2 = 0; i2 < arr2.length; i2++) {
if(arr1[i]==arr1[i2]){
count1++;
}
}
for (int j2 = 0; j2 < arr2.length; j2++) {
if(arr2[j]==arr2[j2]){
count2++;
}
}
if(count1!=count2){
System.out.println("两个数组是不相同的");
System.exit(0);
}
break am;
}
}
}
if(count == arr1.length){
System.out.println("两个数组是相同的");
}else{
System.out.println("两个数组是不相同的");
}
}
}
3.2 定义一个方法fill(int[] arr,int value),功能:将数组arr中的所有元素的值改为value
public class TZ032 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
int value = 8;
fill(arr,value);
}
public static void fill(int[] arr,int value){
System.out.println("数组的元素变为:");
for (int i = 0; i < arr.length; i++) {
arr[i] = value;
System.out.print(arr[i]);
}
}
}
3.3将数组arr中的元素从索引fromIndex开始到toIndex(不包含toIndex)对应的值改为value
定义一个方法fill(int[] arr,int fromIndex,int toIndex,int value),功能:将数组arr中的元素从索引fromIndex开始到toIndex(不包含toIndex)对应的值改为value
public class TZ033 {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 ,6,7};
int value = 8;
int fromIndex =0;
int toIndex =5;
fill(arr, fromIndex,toIndex,value);
}
public static void fill(int[] arr,int fromIndex,int toIndex,int value) {
System.out.println("数组的元素变为:");
for (int i = fromIndex; i <= toIndex; i++) {
arr[i] = value;
System.out.print(arr[i]);
}
}
}
3.4 将数组arr中的newLength个元素拷贝到新数组中,并将新数组返回,从索引为0开始
定义一个方法copyOf(int[] arr, int newLength),功能:将数组arr中的newLength个元素拷贝到新数组中,并将新数组返回,从索引为0开始
public class TZ034 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8};
int newLength = 4;
int[] newarr = copyOf(arr,newLength);
System.out.println("复制的新数组:");
for (int j = 0; j < newarr.length; j++) {
System.out.print(+newarr[j]);
}
}
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;
}
}
3.5 将数组arr中从索引from(包含from)开始到索引to结束(不包含to)的元素复制到新数组中,并将新数组返回
定义一个方法copyOfRange(int[] arr,int from, int to),功能:将数组arr中从索引from(包含from)开始到索引to结束(不包含to)的元素复制到新数组中,并将新数组返回
4. 训练案例4
4.1. 训练描述
定义一个方法,去打印指定两个年份之间所有的闰年年份
如:将2000和2005传入方法,方法执行完毕会打印出这段之间的所有闰年年份
2000和2004
提示:
计算公历年闰年的算法: 四年一闰,百年不闰,四百年再闰
翻译:
满足如下任意一条即使如年
1)年份是整百数的必须是400的倍数才是闰年(能被100整除并且能被400整除)
2)其他年份能被4的是闰年
实例: 2000 是整百数,并且是400的倍数所以是闰年; 2004年是4的倍数是闰年
2100 是整百的倍数但不是400的倍数,所以不是闰年
public class TZ04 {
public static void main(String[] args) {
int x = 2000;
int y = 2005;
run(x,y);
}
public static void run(int x , int y){
for (int i = x; i <= y; i++) {
if((i % 4 == 0 & i %100 != 0) || i%400 == 0){
System.out.println("闰年年份:"+i);
}
}
}
}
5. 训练案例5
5.1. 训练描述
1.键盘录入一个整数(正数或者负数都可以,但是符号位不算有效的数字位)
2.定义一个方法,该方法的功能是计算该数字是几位数字,并将位数返回
3.在main方法中打印该数字是几位数
4.演示格式如下:
(1)演示一:
请输入一个整数:1234
控制台输出:1234是4位数字
(2)演示二:
请输入一个整数:-34567
控制台输出:-34567是5位数字
public class TZ05 {
public static void main(String[] args) {
int a = -123456789;
int b = wei(a);
System.out.println(a+"该数字是"+b+"位数");
}
public static int wei(int x){
int j = 0;
int k = 0;
if(x<0){
x = -x;
}
for (int i = 20; i >= 0; i--) {
j = (int) Math.pow(10, i);
System.out.println(j);
double u = x/j;
System.out.println(u);
if(u >=1){
k = i+1;
return k;
}
}
return k;
}
}
6. 训练案例6
6.1. 训练描述
分析以下需求,并用代码实现(每个小需求都需要封装成方法)
1.求两个数据之和(整数和小数)
2.判断两个数据是否相等(整数和小数)
3.获取两个数中较大的值(整数和小数)
4.获取两个数中较小的值(整数和小数)
5.否能用一个方法实现3和4的两个功能
6.2. 操作步骤描述
1.求两个数据之和(整数和小数)
(1)参数类型:int或者double
(2)返回值类型:int或者double
所以需要定义两个重载的方法,一个为求两个int数据的和,一个为求两个double数据的和
2.判断两个数据是否相等(整数和小数)
(1)参数类型:int或者double
(2)返回值类型:boolean
所以需要定义两个重载的方法,一个为判断两个int数据是否相等,一个为判断两个double数据是否相等
3.获取两个数中较大的值(整数和小数)
(1)参数类型:int或者double
(2)返回值类型:int或者double
所以需要定义两个重载的方法,一个为求两个int数据的最大值,一个为求两个double数据的最大值
4.获取两个数中较小的值(整数和小数)
(1)参数类型:int或者double
(2)返回值类型:int或者double
所以需要定义两个重载的方法,一个为求两个int数据的最校值,一个为求两个double数据的最小值
5.否能用一个方法实现3和4的两个功能
(1)参数类型:int或者double,但必须有个flag标记用于表示到底是求最大值还是最小值(boolean类型)
(2)返回值类型:int或者double
所以需要定义两个重载的方法,一个为求两个int数据的最校值,一个为求两个double数据的最小值
public class TZ06 {
public static void main(String[] args) {
int a = 5;
int b = 7;
double q = 4.5;
double w = 6.5;
//double sum =sum(q,w);
System.out.println(q+","+w+"两个数据之和"+sum(q,w));
System.out.println(a+","+b+"两个数据之和"+sum(a,b));
System.out.println(a+","+b+"两个数据是否相等"+equal(a,b));
max(a,b);
}
public static int sum(int x,int y){
return x+y;
}
public static double sum(double x,double y){
return x+y;
}
public static boolean equal(int x,int y){
return x==y;
}
public static boolean equal(double x,double y){
return x==y;
}
public static void max(int x,int y){
int max = x>=y?x:y;
int min = x<=y?x:y;
System.out.println(x+"和"+y+",最小值为"+min+",最大值为"+max);
}
public static void max(double x,double y){
double max = x>=y?x:y;
double min = x<=y?x:y;
System.out.println(x+"和"+y+",最小值为"+min+",最大值为"+max);
}
}
7. 训练案例7
7.1. 训练描述
定义一个方法传入一个int类型数组,输出这个数组中每一个数字及其出现的个数
例如 传入数组[1,2,2,2,3,3,4,4,4,4] 打印结果:
数字1出现了1次
数字2出现了3次…
package day05;
/*定义一个方法传入一个int类型数组,输出这个数组中每一个数字及其出现的个数
例如 传入数组[1,2,2,2,3,3,4,4,4,4] 打印结果:
数字1出现了1次
数字2出现了3次…*/
public class TZ07 {
public static void main(String[] args) {
int[] arr ={1,2,2,2,3,3,4,4,4,4};
ci(arr);
}
public static void ci(int[] arr){
for (int i = 0; i < arr.length; i++) {
int sum = 0;
for (int j = 0; j < arr.length; j++) {
if(arr[i]==arr[j]){
sum++;
}
}
System.out.println("数字"+arr[i]+"出现了"+sum+"次");
}
}
}
8. 训练案例8
8.1. 训练描述
分析以下需求,并用代码实现
1.创建两个长度为10的数组,数组内元素为随机生成的、不重复的 1-100之间的整数。
2.定义一个方法,传入两个数组,方法中将两个数组不同的元素拼接成一个字符串,并且将该字符串以及字符串的长度输出到控制台上;
如果没有则输出"对不起两个数组的所有元素均相同"