可变参数(如:int …i)
JDK1.5开始,Java支持床底同类型的可变参数给一个方法;
- 在方法声明中,在指定参数类型后加一个省略号(…);也称不定向参数。
- 一个方法中只能指定一个可变的参数,而且它必须是方法的最后一个参数;任何普通的参数必须在它之前声明。
- package com.zhai.method;
public class Demo5 {
/**
* 可变的参数
* @param args
*/
public static void main(String[] args) {
Demo5 demo5 = new Demo5(); // 实例化对象,通过new一个当前类进行调用该类的方法
demo5.method(1,2,3,4,5); // 利用对象名进行调用该类的方法,并且进行传递参数(实参)
}
public void method(int ...i){ // 定义的方法以及形参
System.out.println(i[0]); // 获取参数从0开始
System.out.println(i[1]);
System.out.println(i[2]);
System.out.println(i[3]);
System.out.println(i[4]);
}
}
输出:
1
2
3
4
5
解析:可以看见我定义方法的时候写的形参是int …i,这个就是写可变的参数的语法;这样定义的方法可以传入多个参数。
比较大小:
package com.zhai.method;
public class Demo6 {
public static void main(String[] args) {
method(1,2,3,4,5.0); // 可以使用static进行调用method方法
}
// 先定义一个 method 方法,并且写入可变参数类型为 double
public static void method(double ...doubles){
if (doubles.length == 0){ // 如果参数长度等于0的话
System.out.println("没有传递参数..."); // 就会输出没有传递参数
return; // 然后返回
}
double result = doubles[0];
// 定义个容器,用于接收上面的多个参数所以这里就会用到数组
// 排序 // 因为它不是一个数字,所以想要输出必须通过循环
for (int i = 0; i < doubles.length; i++) {
// 就是先定义一个变量,然后让这个变量小于参数的长度,然后 ++自增让他继续循环
if (doubles[i]>result){ // 如果参数的第i个数据大于第1个参数
result = doubles[i]; // 那么就把这个值赋给result
}
}
System.out.println("这是最大值:"+result); // 然后进行输出
}
}
输出:
这是最大值:5.0
四、递归
- A方法调B方法,我们很容易理解!
- 递归就是:A方法调用A方法,就是自己调用自己。
- 利用递归可以用简单的程序来解决一些复杂的问题,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来进行求解,递归策略只需要少量的程序就可以描述出解题过程所需要的多次重复计算,大大减少了程序的代码量;递归的能力在于用有效的语句来定义对象的无线集合。
- 递归的结构包括两个部分:
- 递归头:什么时候不调用自身的方法,如果没有头,将陷入死循环。
- 递归体:什么时候需要调用自身的方法。
- package com.zhai.method;
public class DG1 {
public static void main(String[] args) {
System.out.println(Dg(6)); // 输出:递归方法并且传入参数进行递归
}
// 递归:如:5*4*3*2*1
public static int Dg(int x){ // 自定义一个方法用于递归Dg
if (x==1){ // 如果 参数要是等于1的话就直接返回1,因为1的递归后还是1就相当于1*1
return 1;
}else{
return x*Dg(x-1); // 否则就返回参数*方法Dg参数减1、
// 就是它每次递归时,要乘比它本身小于1的数字 所以这里就是x-1
}
}
}
输出:
720
- 使用基础实现计算器(小练习)
- package com.zhai;
import java.util.Scanner;
public class CalcDemo {
public static void main(String[] args) {
System.out.println("====================计算器====================");
Scanner scanner = new Scanner(System.in);
System.out.println("请您输入第一个数字");
int v1 = scanner.nextInt();
System.out.println("请您输入一个运算符...");
String next = scanner.next();
System.out.println("请您输入第二个数字");
int v2 = scanner.nextInt();
switch(next){
case "+":
System.out.println("您输入的结果是:"+v1 + next + v2 + "=" +(v1+v2));
break;
case "-":
System.out.println("您输入的结果是:"+v1 + next + v2 + "=" +(v1-v2));
break;
case "✖":
System.out.println("您输入的结果是:"+v1 + next + v2 + "=" +(v1*v2));
break;
case "/":
System.out.println("您输入的结果是:"+v1 + next + v2 + "=" +(v1/v2));
break;
}
}
}
输出:
====================计算器====================
请您输入第一个数字
23
请您输入一个运算符...
+
请您输入第二个数字
17
您输入的结果是:23+17=40
解析:使用Scanner对象可以让用户在控制台进行输入,然后在利用switch进行根据用户输入的运算符来选择,然后在进行计算将结果返回!