java-方法

方法:是一种语法结构,把一段代码封装成为一个功能,以方便重复调用。

提高代码的复用性,让程序的逻辑更清晰。

例子:

public class Test{
    public static void main(String[] args){
    int d= sum(10,30);
    System.out.println(d);
    }
    public static int sum(int a,int b){
                  int c =a+b;
                  return c;
    }
}

方法定义的完整格式

    修饰符 返回值类型 方法名(形参列表){

                方法体代码(需要执行的功能代码)

                return 返回值;

}

方法定义时,返回值类型、形参列表可以根据需求进行填写。

方法的调用:方法名( … )

有返回值类型的调用

    1.赋值调用:定义变量接收方法的结果

    2.输出调用:放在输出语句中调用

    3.直接调用:方法还是会执行,只是返回结果我们不要了。

无返回值方法的调用:直接调用。

方法的运行区域在栈内存里边。

实参:方法内部定义的变量

形参:在定义方法时,( )中所声明的

java的参数传递机制:值传递

  • 在传递实参给方法的形参时,传输实参变量中存储的值而不是实参变量本身。

  • 基本数据类型传递的是存储的数据值,引用类型传输的是储存的地址值。

传输数组

public static void main(String[] args){
        int[] d={};
        printsz(d);
        }
        public static void printsz(int[] sz){
            System.out.print("[");
            if(sz != null && sz.length >0){          
                for (int i = 0; i < sz.length; i++) {
                    System.out.print(i==sz.length-1 ? sz[i]:sz[i]+",");
                    // if(i==sz.length-1){
                    //     System.out.print(sz[i]);
                    // }else{
                    //     System.out.print(sz[i]+",");
                    // }
                }
            }
            System.out.print("]");
        }

判断数组是否一致:

public static void main(String[] args){
        int[] arr1={1,2,3,4,5};
        int[] arr2={1,2,3,4,5};
        System.out.println(printsz(arr1,arr2));
        }
        public static boolean printsz(int[] arr1,int[] arr2){
            if(arr1.length==arr2.length){ 
               for (int i = 0; i < arr1.length; i++) {
                    if(arr1[i]!=arr2[i]){
                       return false;
                    }
                }
                return true;
             }else{
                return false;
              }
        }

方法重载:同一个类中,出现多个方法名称相同,但是形参列表是不同的,那么这些方法就是重载方法。可读性好,提高了开发效率。

调用方法时会通过参数的不同,区分调用的是哪个方法。

return; ——>立即跳出并结束当前方法的执行,可以用于任何方法中。

break; ——>跳出并结束当前循环的执行;只能用于结束所在循环,或者结束所在switch分支的执行。

continue; ——>跳出当前循环的当次执行,进入下一次循环;只能在循环中使用。

案例

飞机票

import java.util.Scanner;
public class App {
    public static void main(String[] args){
        //输入检测
        Scanner sc =new Scanner(System.in);
        System.out.println("机票原价:");    
        double money=sc.nextDouble();

        System.out.println("机票的月份:");
        int month =sc.nextInt();

        System.out.println("仓位类型:");
        String type=sc.next();
        System.out.println(calc(money, month, type));
        sc.close();
        }
        //定义方法
        public static double calc(double money, int month, String type){
            if (month>=5&&month<=10) {
                    switch(type){
                        case"头等舱":money *=0.9;break;
                        case"经济舱":money *=0.85;break;
                        default:System.out.println("舱位error!");
                        money=-1;
                    }
            } else if(month==11||month==12||month>=1&&month<=4){
                    switch(type){
                        case"头等舱":money *=0.7;break;
                        case"经济舱":money *=0.65;break;
                        default:System.out.println("舱位error!");
                        money=-1;
                    }
            } else{
                System.out.println("月份有问题");
                return -1;
            }
            return money;    
        }
    }

生成随机的验证码:

import java.util.Random;
public class App {
    public static void main(String[] args){
        //调用获取验证码方法得到随机的验证码
        String code=yzm(5);
        System.out.println(code);
        }
        //定义方法
        public static String yzm( int n){
            //定义一个字符串变量记录
            String code="";
            Random r=new Random();
            //定义一个for循环,循环n次
            for (int i = 0; i < n; i++) {
                //定义验证码有英文大小写,数字
                int type=r.nextInt(3);
                switch(type){
                case 0:char ch=(char)(r.nextInt(26)+65);
                        code+=ch;
                        break;//A 65-Z 65+25
                case 1:char ch1=(char)(r.nextInt(26)+97);
                        code+=ch1;
                        break;//a 97-z 97+25
                case 2:code+=r.nextInt(10);
                    break;}//0-9
            }
            return code;      
        } 

数组复制:

public static void main(String[] args){
        int arr1[]={1,2,3,4,5};
        //定义一个与数组1一样的长度
        int arr2[]=new int[arr1.length];
        //调用方法
        copy(arr1, arr2);
        printArray(arr1);
        printArray(arr2);
    }
    //写一个输出数组的方法
    public static void printArray(int[] arr) {
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i==arr.length-1?arr[i]:arr[i]+",");
        }
        System.out.println("]");
    }
    //写一个复制数组的方法
    public static void copy(int arr1[] , int[] arr2) {
        for (int i = 0; i < arr1.length; i++) {
            arr2[i]=arr1[i];    
        }       
    }

评委打分:

import java.util.Scanner;
public class App {
    public static void main(String[] args){
        //定义一个动态数组
        int scores[]=new int[6];
        //键入分数
        Scanner sc=new Scanner(System.in);
        for(int i=0;i<scores.length;i++){
            System.out.println("第"+(i+1)+"个评委打分");
             int score = sc.nextInt();
             scores[i]=score;
            //scores[i]=sc.nextInt();
        }
        sc.close();;
        int max=scores[0];
        int min=scores[0];
        int sum=0;
        //找到最大值与最小值
        for (int i = 0; i < scores.length; i++) {
            if(scores[i]>max){
                max=scores[i];
            } 
            if(scores[i]<min){
                min=scores[i];
            } 
            //总分
            sum+=scores[i]; 
        }  
        //去除最大与最小,求平均值 
        double result=(sum-max-min)*1.0/(scores.length-2);
        System.out.println(result);
        System.out.println("最高分:"+max);
        System.out.println("最低分:"+min);
    }
 }

数字加密:

    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        //定义数组长度
        System.out.println("输入需加密的个数:");
        int length=sc.nextInt();
        int arr[]=new int[length];
        //录入加密数字
        for(int i=0;i<arr.length;i++){
            System.out.println("请输入加密的"+(i+1)+"个数字");
             int score = sc.nextInt();
             arr[i]=score;
            //scores[i]=sc.nextInt();
        }
        sc.close();
        System.out.print("加密的数字:");
        printArray(arr);
        jiami(arr);
    }
    //加密
    public static void jiami(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
                arr[i]=(arr[i]+5)%10;
        }
    //使用2个变量占据数组的首位,一个变量向qian,一个向后,同步交换两者的值
        for (int i = 0,j=arr.length-1; i < j; i++,j--) {
                int temp=arr[j];
                arr[j]=arr[i];
                arr[i]=temp;
        } 
        System.out.print("加密后的数字:");
        printArray(arr);
    }
    public static void printArray(int[] arr) {
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i==arr.length-1?arr[i]:arr[i]+",");
        }
        System.out.println("]");
    }

双色球系统开发:

import java.util.Random;
import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        //6红1蓝
        int[] luckNumbers=creatLuckNumber();
        int[] userNumbers=userInputNumber();
        //判断中奖情况
        judge(luckNumbers,userNumbers);
    }
    public static int[] creatLuckNumber() {
        int[] luckNumbers = new int[7];
        //遍历数组,为每个位置生成号码
        Random r = new Random();
        for (int i = 0; i < luckNumbers.length-1; i++) {
            //为当前位置生成一个不重复的
            while (true) {
                int data = r.nextInt(33) + 1;
                //判断当前的data是否重复,默认没有重复
                boolean flag = true;
                for (int j = 0; j < i; j++) {
                    if (luckNumbers[i] == data) {
                        //重复
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                //不重复,可以使用
                luckNumbers[i] = data;
                break;
                 }
            }
        }
        //生成一个1-16的号码作为蓝球号码
        luckNumbers[6]=r.nextInt(16)+1;
        return luckNumbers;
    }
    public static int[] userInputNumber(){
        int[] userNumbers=new int[7];
        //用户输入6个红球号码
        Scanner sc =new Scanner(System.in);
        for (int i = 0; i <userNumbers.length-1 ; i++) {
                System.out.println("输入第"+(i+1)+"个红球号码(1-33),不重复:");
                userNumbers[i]= sc.nextInt();
        }
        //输入蓝球号码
        System.out.println("请输入蓝球号码(1-16):");
        userNumbers[6]=sc.nextInt();
        return userNumbers;
    }
    public static void judge(int[] luckNumber,int[] userNumber){
        //定义2个变量记录红蓝球命中个数
        int redLuck =0;
        int blueLuck=0;
        //判断红球命中个数
        for (int i = 0; i < userNumber.length-1; i++) {
            for (int j = 0; j < luckNumber.length-1; j++) {
                if(userNumber[i]==luckNumber[j]){
                    redLuck++;
                    break;
                }
            }
        }
        //判断蓝球是否命中
        blueLuck=luckNumber[6]==userNumber[6]?1:0;

        System.out.println("中奖号码是:");
        printArray(luckNumber);
        System.out.println("您的号码是:");
        printArray(userNumber);
        System.out.println("您命中了几个红球:"+redLuck);
        System.out.println("你是否命中蓝球:"+(blueLuck==1?"是":"否"));
        //判断中奖情况
        if (blueLuck==0){
            switch (redLuck){
                case 0:
                case 1:
                case 2:
                case 3: System.out.println("谢谢惠顾");break;
                case 4: System.out.println("恭喜您中奖10元");break;
                case 5: System.out.println("恭喜您中奖200元");break;
                case 6: System.out.println("恭喜您中奖500万元");break;
            }
        }else{
            switch (redLuck) {
                case 0:
                case 1:
                case 2: System.out.println("恭喜您中奖5元");break;
                case 3: System.out.println("恭喜您中奖10元");break;
                case 4: System.out.println("恭喜您中奖200元");break;
                case 5: System.out.println("恭喜您中奖3000元");break;
                case 6: System.out.println("恭喜您中奖1000万元");break;
            }
        }
    }
    public static void printArray(int[] arr) {
        for (int i = 0; i <arr.length; i++) {
            System.out.print(arr[i]+"\t");
        }
        System.out.println();
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值