Day04-Java方法

Java方法详解

1.什么是方法?

 

package com.sj.method;

public class Demo01 {
   //main 方法
   public static void main(String[] args) {
//       int sum = add(1,2);
//       System.out.println(sum);

       test();
  }


   //加法
   public static int add(int a, int b){
       return a+b;
  }

   public  static  void test(){      //void 空
       for (int i = 0; i <=1000; i++){
           if (i%5==0){
               System.out.print(i+"\t");//"\t"=空格;"\n"=换行   print与println之间区别:ln代表自动换行
          }
           if (i%(5*3)==0){//每行3个就换行 (第三个数必备15整除)
               System.out.println();
               //System.out.println("\n");
          }
      }
  }
}

 

2.方法的定义和调用

方法定义:

 

形式参数,用来定义作用的

实际参数:实际调用传递给他的参数

方法调用:

 

方法调用练习:(加减乘除)

package com.sj.method;

public class Fangfadiaoyonglianxi {
   public static void main(String[] args) {
       int sum = add(20,10);
       int jian = subtract(20,10);
       int cheng = multiplication(20,10);
       int chu = division(20,10);
       System.out.println("a=20,b=10");
       System.out.println("a+b="+sum);
       System.out.println("a-b="+jian);
       System.out.println("a*b="+cheng);
       System.out.println("a/b="+chu);
  }

   //相加
   public static int add(int a, int b){
       return a+b;
  }
   //相减
   public static int subtract(int a,int b){
       return a-b;
  }
   //相乘
   public static int multiplication(int a,int b){
       return a*b;
  }
   //相除
   public static int division(int a,int b){
       return a/b;
  }
   
}

课后拓展了解:值传递(Java)和引用传递

3.方法的重载

 

 

package com.sj.method;

public class Demo02 {
   public static void main(String[] args) {
       double max = max(10.0,10.0);
       System.out.println(max);
  }

   //比大小
   public static double max(double num1,double num2){

       double result = 0;

       if (num1==num2){
           System.out.println("num1==num2");
           return 0; //终止方法
      }

       if (num1>num2){
           result = num1;
      }else{
           result = num2;
      }

       return result;
  }

   //比大小
   public static int max(int num1,int num2){

       int result = 0;

       if (num1==num2){
           System.out.println("num1==num2");
           return 0; //终止方法
      }

       if (num1>num2){
           result = num1;
      }else{
           result = num2;
      }

       return result;
  }
}

 

4.命令行传递参数

 

 

package com.sj.method;

public class Demo03 {
   public static void main(String[] args) {
       //args.length 数组长度
       for (int i = 0; i < args.length; i++) {
           System.out.println("args["+ i +"]:" +args[i]);
      }
  }
}

5.可变参数(不定项)

 

package com.sj.method;

public class Demo04 {
   public static void main(String[] args) {
       Demo04 demo04 = new Demo04();
       demo04.test(1,2,3,4,5);

  }
   public void test(int x, int... i){//一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明,如:int...在最后
       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]);
  }
}

 

查找最大值:

package com.sj.method;

public class Demo04 {
   public static void main(String[] args) {
       // 调用可变参数的方法
       printMax(34,3,3,2,56.5);
       printMax(new double[]{1,2,4});
  }
   public static void printMax(double... numbers){//一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明,如:int...在最后
       if (numbers.length == 0){
           System.out.println("No argument passed");
           return;
      }
       double result = numbers[0];
       // 查找最大值!
       for (int i = 1; i < numbers.length; i++) {
           if (numbers[i] > result){
               result = numbers[i];
          }
      }
       System.out.println("The max value is " + result);
  }
}

 

 

6.递归讲解

 

 

边界条件:边界

前阶段:

返回阶段:n*(n-1)

!!!栈

package com.sj.method;

public class Demo06 {
   //阶乘: 2!=2*1
   //阶乘: 3!=3*2*1
   //阶乘: 5!=5*4*3*2*1
   public static void main(String[] args) {
       System.out.println(f(5));
  }
   //阶乘: 1!=1
   //阶乘: 5!=5*4*3*2*1
   public static int f(int n){
       if (n<1){
           System.out.println("不符合");
           return 0;
      }else if (n==1){
           return 1;
      }else {
           return n*f(n-1);
      }
  }
}

 

课后练习:

 

计算器:

(方法1):

package com.sj.method;

import java.util.Scanner;

public class calculator {
   //计算器:calculator
   public static void main(String[] args) {
       Scanner jisuan = new Scanner(System.in);

       double add = 0;
       double subtract = 0;
       double multiplication = 0;
       double division = 0;

       System.out.println("请输入第一个数据(并回车):");
       while (jisuan.hasNextDouble()){
           double a = jisuan.nextDouble();
           System.out.println("请输入符号(并回车):");
           String c = jisuan.next();
           System.out.println("请输入第二个数据(并回车):");
           double b = jisuan.nextDouble();

           switch (c){
               case "+":
                   System.out.println(a+"+"+b+"="+(add(a,b)));
                   break;
               case "-":
                   System.out.println(a+"-"+b+"="+(subtract(a,b)));
                   break;
               case "*":
                   System.out.println(a+"*"+b+"="+(multiplication(a,b)));
                   break;
               case "/":
                   if (b == 0){
                       System.out.println("被除数不能为0!");
                  }else {
                       System.out.println(a+"/"+b+"="+(division(a,b)));
                  }
                   break;
          }
           System.out.println("输入任意字母退出或接着输入第一个数据:");
      }


       jisuan.close();


  }


   //方法:加减乘除
   //相加
   public static double add(double a, double b){
       return a+b;
  }
   //相减
   public static double subtract(double a,double b){
       return a-b;
  }
   //相乘
   public static double multiplication(double a,double b){
       return a*b;
  }
   //相除
   public static double division(double a,double b){
       return a/b;
  }

}

(方法2):

package com.sj.method;
import java.util.Scanner;

public class aaa {
   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
       System.out.println("值1:");
       double num1 = scanner.nextDouble();
       System.out.println("请输入计算方式:");
       String jisuantype = scanner.next();
       System.out.println("值2:");
       double num2 = scanner.nextDouble();
       if (jisuantype == "+,-,*,/"){
           switch (jisuantype) {
               case "+":
                   System.out.println(num1 + num2);
                   break;
               case "-":
                   System.out.println(num1  - num2);
                   break;
               case "*":
                   System.out.println(num1  * num2);
                   break;
               case "/":
                   if (num2 == 0){
                       System.out.println("被除数不能为0!");
                  }else {
                       System.out.println(num1  / num2);
                  }
                   break;
          }

      }else{
           System.out.println("请输入正确的计算符号");
      }

       scanner.close();
  }
}

 

问题:

怎么解决输入的符号不是符号的情况?

 

posted @ 2021-12-04 10:35  Asuka0904  阅读(55)  评论(0)    收藏  举报