java08 -可变参数+递归+计算器练习
可变参数
-
JDK1.5开始,Java支持传递同类型的可变参数给一个方法。
-
在方法声明中,在指定参数类型后加一个省略号(... )。
-
不一个方法中只能指定一个可变参数, 它必须是方法的最后一个参数。 任何普通的参数必须在它
之前声明。 -
类似于数数组。(个人观点)
public class Dome04 { public static void main(String[] args) { Dome04 dome04 = new Dome04(); dome04.test(1,2,3,4,5,56,6); } public void test (int... i){ System.out.println(i[0]); System.out.println(i[1]); System.out.println(i[2]); System.out.println(i[3]); System.out.println(i[4]); System.out.println(i[5]); System.out.println(i[6]); }
1 2 3 4 5 56 6
递归
- A方法调用B方法,我们很容易理解?
- 递归就是:A方法调用A方法! 就是自己调用自己 。
- 利用递归可以用简单 的程序来解决一些复杂的问题。 它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解, 递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算, 大大地减少了程序的代码量。 递归的能力在于用有限的语句来定义对象的无限集合。
- 递归结构包括两个部分:
- 递归头:什么时候不调用自身方法。 如果没有头,将陷入死循环。
- 递归体:什么时候需要调用自身方法。
- 递归的层数不能太多!
练习
-
计算器,实现加减乘除,并能够循环接受新的数据,通过用户交互实现。
-
思路推荐
-
写四个方法:加减乘除
-
利用循环+switch进行用户交互
-
传递需要操作的两个数
-
输出结果
-
package com.guan.method; import com.sun.org.apache.xpath.internal.operations.Div; import java.util.Scanner; // 输入第一个数 scnaner,nextDouble //运算符 scanner.next() //第二个数 //调用运算方法 调用函数 //输出结果 //再次计算 dowhile public class Calcolator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); double result = 0; do {//循环进行计算 //输入 double number1 = scanner.nextDouble();//使用next()方法因为空格就停止接收 String operator = scanner.next();//使用next()方法因为空格就停止接收 double number2 = scanner.nextDouble();//使用next()方法因为空格就停止接收 //选择操作符号 switch (operator){ case "+": //调用加法 result = add(number1,number2); break; case "-": //调用减法 result = Subtraction(number1,number2); break; case "*": //调用乘法 result = Multiplication(number1,number2); break; case "/": //调用除法 result = Division(number1,number2); break; } //输出结果 System.out.println("result = "+ result); }while (scanner.hasNextDouble());//如果下一个字符是非数字的话退出循环 scanner.close();//关闭IO流 scanner } //加法 public static double add(double...number){//设置可变参数进行加法,其实没啥用 俩参数就行 return number[0]+number[1]; } //减法s public static double Subtraction(double...number){ return number[0]-number[1]; } //乘法 public static double Multiplication(double...number){ return number[0]*number[1]; } //除法 public static double Division(double...number){ return number[0]/number[1]; } }
1 + 2 result = 3.0 4 / 2 result = 2.0 4 + 5 result = 9.0 7 * 9 result = 63.0 d Process finished with exit code 0
-