1. 程式人生 > 其它 >2022/4/19 JavaDay11

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();
             }
         }
     }