知识点¶
方法
题目1¶
定义一个方法,该方法能够找出两个小数中的较小值并返回。在主方法中调用方法进行测试。
训练提示¶
- 根据方法的功能描述,方法的参数应该是两个小数。
- 要返回两个小数的较小值,所以返回值类型也是小数类型。
解题方案¶
操作步骤¶
- 定义方法getMin(),方法的参数是double a ,double b。
- 在方法中对两个数字进行判断,返回较小值。
- 在主方法中调用getMin()方法并接受返回值。
- 在主方法中打印结果。
参考代码¶
public class Test1 {
public static void main(String[] args) {
System.out.println(getMin(2.1,3.7));
}
public static double getMin(double a, double b) {
double min = a < b ? a : b;
return min;
}
}
题目2¶
定义一个方法,该方法能够找出三个整数中的最大值并返回。在主方法中调用方法测试执行。
训练提示¶
- 根据题意,方法中需要使用三个整数,所以方法参数应该是三个整数类型。
- 方法需要有返回值,返回值的类型也是整数类型。
解题方案¶
操作步骤¶
- 定义方法getMax(),方法的参数是三个int类型变量a,b,c,方法的返回值是int类型。
- 在方法中使用多分支if...else...或者三元运算符判断出最大值并返回。
- 在主方法中调用getMax()方法并接受返回值。
- 在主方法中打印结果。
参考代码¶
public class Test1 {
public static void main(String[] args) {
System.out.println(getMax(3,17,10));
}
public static int getMax(int a, int b, int c) {
int temp = a > b ? a : b;
int max = temp > c ? temp : c ;
return max;
}
}
public class Test2 {
public static void main(String[] args) {
System.out.println(getMax(3, 17, 10));
}
public static int getMax(int a, int b, int c) {
if (a > b) {
//a 大
//拿着大的跟第三个数再比较
if(a > c){
return a;
}else{
return c;
}
}else{
//b 大
if(b > c){
return b;
}else{
return c;
}
}
}
}
题目3¶
在主方法中通过键盘录入三个整数。定义一个方法,方法接收三个整数变量,在方法中从大到小依次打印三个变量。执行效果如下:
训练提示¶
- 方法需要接受三个整数,那么方法的形式参数如何定义?
- 方法没有返回值的需求,返回值类型是什么?
解题方案¶
操作步骤¶
-
使用键盘录入分别录入三个整数。
-
定义method方法,方法的参数是三个int类型,方法的返回值类型是void。
2.1. 定义整数变量max用于存储最大值,定义min变量用于存储最小值。
2.2. 使用if..else..多分支判断语句或者三元运算符计算三个整数中的最大值并赋值给max。
2.3. 使用if..else..多分支判断语句或者三元运算符计算三个整数中的最小值并赋值给min。
2.4. 定义变量mid代表中间数,三个整数的和减去max,再减去min,就是中间数的值。
2.5. 依次打印最大值,中间值和最小值。
- 在主方法中调用method方法,传入参数。
参考答案¶
public class Test5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数");
int num1 = sc.nextInt();
System.out.println("请输入第二个数");
int num2 = sc.nextInt();
System.out.println("请输入第三个数");
int num3 = sc.nextInt();
//获取最大值
int max = getMax(num1, num2, num3);
//获取最小值
int min = getMin(num1, num2, num3);
//获取中间值
int mid = (num1 + num2 + num3) - max - min;
System.out.println(max + " " + mid + " " + min);
}
public static int getMax(int a, int b, int c) {
int temp = a > b ? a : b;
int max = temp > c ? temp : c;
return max;
}
public static int getMin(int a, int b, int c) {
int temp = a < b ? a : b;
int min = temp < c ? temp : c;
return min;
}
}
题目4¶
数字是有绝对值的,负数的绝对值是它本身取反,非负数的绝对值是它本身。请定义一个方法,方法能够得到小数类型数字的绝对值并返回。请定义方法并测试。
训练提示¶
- 方法的功能是得到一个小数的绝对值,参数应该是一个小数类型。
- 绝对值需要被返回,返回值类型应该也是小数类型。
解题方案¶
操作步骤¶
-
定义一个小数变量num。
-
定义获取绝对值的方法,方法的参数是一个double类型,返回值类型是double。
-
在方法内部使用if..else..判断。
3.1. 如果是负数则对负数取反并返回。
3.2. 如果不是负数则直接返回数字本身。
- 在主方法中调用绝对值方法,传入参数num,并接受返回值。
- 打印返回的结果。
参考答案¶
题目5¶
键盘录入一个正整数
定义一个方法,该方法的功能是计算该数字是几位数字,并将位数返回
在main方法中打印该数字是几位数
演示格式如下: (1)演示一: 请输入一个整数:1234 控制台输出:1234是4位数字 (2)演示二: 请输入一个整数:34567 控制台输出:34567是5位数字
训练提示¶
- 方法的功能是求有多少位,所以参数是一个,就是要计算的数据。
- 题目说要返回,所以方法必须有返回值。
解题方案¶
操作步骤¶
-
键盘录入一个正整数
-
定义获取位数的方法,方法的参数是一个int类型,返回值类型是int。
-
在方法内部使用循环获取有多少位
可以不断的除以10,当结果为0时,循环结束。 除以10的次数,就是数字的位数。
举例:
123 除以第一次10之后为:12
除以第二次10之后为:1
除以第三次10之后为:0
表示123是三位数
-
在主方法中调用方法,传入参数,并接受返回值。
-
打印返回的结果。
参考答案¶
题目6¶
需求:
定义一个方法equals(int[] arr1,int[] arr2).
功能:
比较两个数组是否相等(长度和内容均相等则认为两个数组是相同的)
参考答案¶
题目7:¶
需求:
定义一个方法fill(int[] arr,int value)
功能:
将数组arr中的所有元素的值改为value
参考答案¶
题目8:(较难)¶
需求:
定义一个方法fill(int[] arr,int fromIndex,int toIndex,int value)
功能:
将数组arr中的元素从索引fromIndex开始到toIndex(不包含toIndex)对应的值改为value
参考答案¶
题目9:(较难)¶
需求:
定义一个方法copyOf(int[] arr, int newLength)
功能:
将数组arr中的newLength个元素拷贝到新数组中,并将新数组返回,从索引为0开始
参考答案¶
题目10:(较难)¶
需求:
定义一个方法copyOfRange(int[] arr,int from, int to)
功能:
将数组arr中从索引from(包含from)开始,到索引to结束(不包含to)的元素复制到新数组中,
并将新数组返回。
参考答案¶
题目11(很难)¶
一个大V直播抽奖,奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。打印效果如下:(随机顺序,不一定是下面的顺序)
训练提示¶
- 奖项要随机出现,但奖金不是连续的数字,不能被随机产生。能随机产生的只有数组的索引了,可以使用随机索引来代表随机元素。因为索引和元素是一一对应的,
- 哪些奖被抽过了,哪些奖没有被抽过,要定义一个数组来存放已经被抽过的奖项。
- 每个奖项只能被抽出一次,要写一个方法来控制奖项不重复。
解题方案¶
使用数组存放多个奖金,再使用另一个数组存放已经被抽过的奖金,使用方法来判断某个奖金是否已经被抽取过。
操作步骤¶
- 定义奖金的数组arr。
- 定义数组brr准备存放已经被抽过的奖金,两个数组长度相同。
- 定义一个变量index,用户代表数组brr的索引。
- 定义方法,判断数组中是否存在某数字,存在返回true,不存在返回false。
- 写一个while循环,如果index<arr.length则说明奖项没有被抽完继续抽取。
- 在循环中使用随机数产生一个随机索引i。
- 使用步骤4的方法判断brr数组中是否包含arr[i]奖金。
- 如果不包含,则打印arr[i]奖金,并且把它放入brr数组中代表已经被抽取过,同时index加一。