java方法,java初次完成计算器

方法

什么是方法

System.out.println("=========================");
//Syste是类
//out是对象
//pintln()是方法
  • 方法是语句的集合,他们在一起可以执行一个功能
  • 方法名规则,驼峰规则
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被使用
  • 方法就是一个功能块,一个方法完成一个功能,有利月后期调试

方法的定义和调用

java的方法类似其他语言的函数,用一段代码片段完成一个功能

方法包含方法头和方法体

修饰符 返回值类型 方法名(参数类型 参数名){
    
    方法体
        
    return 返回值:
    
}
  • 修饰符,可选,告诉编译器如何调用该方法,定以该方法的访问类型
  • 方法的返回值,可能返回,也可能不返回,void表示不返会
  • 方法名,注意命名规范
  • 参数类型像是一个占位符,用于接受输入参数
public class Demo02 {
    public static void main(String[] args) {

        int a=max(10,20);
        System.out.println(a);
    }
    public static int max(int a,int b){

        int num;
        if(a==b){
            return 0;//终止方法,返回值
        }
        if(a>b){
           num=a;
        }else{
            num=b;
        }

        return num;//返回值

    }
}

  • 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。java只有值传递。
  • 引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

方法的重载

  • 重载就是在一个类中,函数名称相同,传的参数不同
    • 方法名称必须相同
    • 参数列表必须不同(参数个数或参数类型或参数排列顺序不同)
    • 方法的返回值类型可以相同也可以不同
    • 仅仅返回值类型不同,不构成重载
  • 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等,逐个进行匹配。以选择对应的方法,如果匹配失败则编译器报错。

命令行传参

有时候希望你运行一个程序的时候,在传递给他消息。这就靠命令行参数给main()函数实现

命令行

可变参数(不定项参数)

  • jdk1.5开始,java支持传递一个同类型的可变参数给一个方法
  • 在方法的申明中,在指定参数后加省略号()
  • 一个方法中只能有一个可变参数,任意其他参数要在他之前,它要放在最后

递归

  • A方法调用A方法,自己调用自己
  • 利用递归我们可以用简单的程序来解决复杂的问题,它通常把一个大型复杂的问题,通过层层转化,把问题转化为一个与问题相似的小问题解决。大大尖山程序的代码量。
  • 递归包含两个部分
    • 递归头,什么时候不调用自己的方法,没有此项就会陷入死循环。
    • 递归体,什么时候需要调用自己。
  • 递归深度越大,就会花费大量时间,占用大量内存。
  • 小计算可以用,大计算另选他法。

练习

写一个计算器,要求可以实现加减乘除功能,并且可以循环接收数据。

package calculator;

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {


        int i=5;
        while(i!=0) {
        System.out.println("=======================计算器");
        System.out.println("============你要进行什么运算");
        System.out.println("============1、加法");
        System.out.println("============2、减法");
        System.out.println("============3、乘法");
        System.out.println("============4、除法");
        System.out.println("============0、退出");
        System.out.print("============你的选择是:");


        Scanner scanner=new Scanner(System.in);
        i=scanner.nextInt();

            double x=0;
            switch (i) {
                case 1:
                    x=add(shu());
                    System.out.println("============输入计算结果为"+x);
                    if(xia()==1){
                        break;
                    }
                case 2:
                    x=min(shu());
                    System.out.println("============输入计算结果为"+x);
                    if(xia()==1){
                        break;
                    }
                case 3:
                    x=cheng(shu());
                    System.out.println("============输入计算结果为"+x);
                    if(xia()==1){
                        break;
                    }
                case 4:
                    x=chu(shu());
                    System.out.println("============输入计算结果为"+x);
                    if(xia()==1){
                        break;
                    }
            }
        }

        
    }
    public static void close(){
        Scanner scanner=new Scanner(System.in);
        scanner.close();
        //scanner关闭一次后不会被再次唤醒,因此需要加入一个方法在main函数结束时统一关闭
    }
    public static int xia(){
        //添加一个选择,用于答案案输出,不直接刷到主页
        System.out.println("============是否进行其他计算");
        System.out.println("============1、是");
        System.out.print("============你的选择是:");
        Scanner scanner=new Scanner(System.in);
        int i=scanner.nextInt();


        return i;
    }
    public static int shu(){
        //询问输入几个数,有助于之后的循环计算
        System.out.println("几个数计算");
        Scanner scanner=new Scanner(System.in);
        int num=scanner.nextInt();


        return num;
    }
    public static double add(int i){
        //加法

        System.out.println("============输入计算的数");
        Scanner scanner=new Scanner(System.in);
        double n=scanner.nextDouble();
        i-=1;        //先前接收了一个,以后要少接受一个数
        while(i!=0){
            double j=scanner.nextDouble();
            n=n+j;
            i--;
        }


        return n;
    }
    public static double min(int i){
        //减法
        System.out.println("============输入计算的数");
        Scanner scanner=new Scanner(System.in);
        double n=scanner.nextDouble();
        i-=1;        //先前接收了一个,以后要少接受一个数
        while(i!=0){
            double j=scanner.nextDouble();
            n=n-j;
            i--;
        }


        return n;
    }
    public static double cheng(int i){
        //乘法
        //先接受一个数,避免原始赋值出现影响
        System.out.println("============输入计算的数");
        Scanner scanner=new Scanner(System.in);
        double n=scanner.nextDouble();
        i-=1;        //先前接收了一个,以后要少接受一个数
        while(i!=0){
            double j=scanner.nextDouble();
            n=n*j;
            i--;
        }


        return n;
    }
    public static double chu(int i){
        //除法
        System.out.println("============输入计算的数");
        Scanner scanner=new Scanner(System.in);
        double n=scanner.nextDouble();
        i-=1;        //先前接收了一个,以后要少接受一个数
        while(i!=0){
            double j=scanner.nextDouble();
            n=n/j;
            i--;
        }


        return n;
    }


}

计算器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值