2022/4/19 JavaDay11

可变参数

  1. jdk1.5开始,java支持传递同类型的可变参数给一个方法

  2. 在方法声明中,指定参数类型后加一个省略号(...)

  3. 一个方法只能指定一个参数,它必须是方法的最后一个参数。任何普通参数必须在它之前声明

 package com.sundada.method;
 ​
 public class Demo04 {
     public static void main(String[] args) {
 //     Demo04 demo04=new Demo04();
 //     demo04.test(1);
         printMax(34,46,46,86,232,34);
         printMax(new double[]{1,2,3});
     }
     public void test(int... i){//只可以放到最后面
         System.out.println(i[0]);//类似于指针和数组
     }
     //排序代码
     public static void printMax(double...numbers){
         if ( numbers.length==0 ){
             System.out.println("排序失败!");
             return;
         }
         double result=numbers[0];
         //排序
         for (int i = 1; i <numbers.length ; i++) {
             if ( numbers[i]>result )
             {
                 result=numbers[i];
 ​
             }
             
         }
         System.out.println("最大值是:"+result);
     }
 }

递归

自我调用

递归结构分为两部分:

  1. 递归头:什么时候不调用自身的方法。没有头将陷入死循环

  2. 递归体:什么时候需要调用自身

 package com.sundada.method;
 ​
 public class Demo06 {
     public static void main(String[] args) {
         System.out.println(f(5));
     }
     //阶乘
     public static int f(int n){
         if ( n==1 ){
             return 1;//递归头,边界条件
         }else {
             return n*f(n-1);//递归体
         }
 ​
     }
 }

只用栈进行运算,递归可能会导致栈溢出,尽量不使用

java 实现计算机加减乘除

 package com.sundada.method;
 import java.util.Scanner;
 public class TestCalculator {
     public static void main(String[] args) {
        Calculator1 calculator1=new Calculator1();
        calculator1.start();
     }
 ​
 ​
 }
     class Calculator1{
         double number1;
         double number2;
         double result;
         char sign;
         boolean reset=true;
         //构造方法
         Calculator1(){}
         //读取键盘数字
         void readNumber(){
             Scanner sc1=new Scanner(System.in);
             number1= sc1.nextDouble();
             sign=sc1.next().charAt(0);
             number2=sc1.nextDouble();}
             double calculate1(){
 ​
             switch (sign){
                 case '+':
                     result=number1+number2;break;
                 case '-':
                     result=number1-number2;break;
                 case '*':
                     result=number1*number2;break;
                 case '/':
                     result=number1/number2;break;
                 default:
                     System.out.println("请输入有效数字!");
                 break;
             }
             return result;
 //                if ( sign=='+' ){
 //                    result=number1+number2;
 //                }else if ( sign=='-' ){
 //                    result=number1-number2;
 //
 //                }else if ( sign=='*' ){
 //                    result=number1*number2;
 //                }else if ( sign=='/'){
 //                    result=number1/number2;
 //                }
 //                return result;
         }
         void showResult(){
             System.out.println(result);
         }
         //退出方法
         void esc(){
             System.out.println("是否继续");
             Scanner sc2=new Scanner(System.in);
             String str=sc2.next();
             if(str.equals("是")){
                 reset=true;
             }else if ( str.equals("否") ){
                 reset=false;
                 System.out.println("退出");
             }else {
                 System.out.println("输入有误!");
             }
 ​
 ​
 ​
         }
          void start(){
             while (reset){
                 System.out.println("请输入数字及符号");
                 readNumber();
                 calculate1();
                 showResult();
                 esc();
             }
         }
     }
posted @ 2022-04-19 21:12  Unclesundada  阅读(19)  评论(0)    收藏  举报