Java基础06方法

方法

1. 用于封装一段特定的逻辑语句
2. 方法尽可能的独立(只干一个事)
3. 方法可以被反复多次调用
4. 有利于代码的重用,提高效率,团队协作开发
5. 方法定义五要素—修饰词 返回值类型 方法名(参数列表){方法体}
6. 方法的参数可有可无,有参更灵活
7. 当方法需要返回值时,设定特定的返回值类型,不需要时,返回值类型为void
8. 返回结果要通过return语句,return后的数据类型必须与返回值类型匹配
-不需要返回值得方法,可以用return语句来结束方法
9. 方法都是用于操作数据的,若所操作的数据比较固定,则需要参数,否则不需要

案例

  1. 输出考试成绩前三名:给定一个成绩数组,输出前三名,并判断是否是有效成绩
//输出考试成绩前三名
import java.util.Arrays;
public class Rank {
    public static void main(String[] args) {
        int[] arr={75,91,-23,64,89,95,112};  //指定的成绩集合数组
        System.out.print("考试成绩前三名成绩是:");
        gen(arr);
    }
    //生成前三名成绩的方法
    public static void gen(int[] arr){
        Arrays.sort(arr);   //数组arr升序排列   
        int num=0; //设定有效元素个数
        for(int i=arr.length-1;i>=0;i--){  //倒序遍历输出数组arr的元素
            if(arr[i]>100||arr[i]<0){ //跳过无效成绩
                continue;
            }
            num++; //有效元素个数+1
            System.out.print(arr[i]+",");
            if(num==3){ //当够三个的时候就停止循环
                break;
            }
        }
    }
}

2.猜字符游戏

//猜字符游戏
import java.util.Scanner;
public class Guessing {
    //主方法
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("欢迎参加猜字符游戏(退出请输入exit)");
        System.out.print("请选择等级(5,7,9):");
        int len=sc.nextInt();
        int score=0;  //最后得分
        int count=0;  //猜错次数
        if(len==5||len==7||len==9){
            char[] a=gen(len);  //随机生成的字符组
            System.out.println(a);
            while(true){  //自造死循环
                System.out.println("请输入猜测的字符:");
                String str=sc.next().toUpperCase();  //从控制台输入字符串,并转换成大写
                if(str.equals("EXIT")){  //比较输入的字符串是否和EXIT一样
                    System.out.println("欢迎再来!");
                    break;
                }else{
                    char[] b=str.toCharArray();  //将控制台输入的字符串转换成字符数组
                    int[] r =check(a,b);   //接收俩个数组比较的结果
                    if(r[1]==5){
                        score=100*len-10*count;  //每个字母100分,猜错一次扣10分
                        System.out.println("恭喜你!猜对了!得分是:"+score);
                        break;
                    }else{
                        count++; //统计猜错次数
                        System.out.println("很遗憾!猜错"+count+"次"+",字符猜对"+r[0]+",位置猜对"+r[1]);
                    }
                }                                           
            }       
        }else {
            System.out.println("输入错误!");
        }            
    }
    //生成随机字符数组方法
    public static char[] gen(int len){
        char[] a=new char[len];
        char[] letters={'A','B','C','D','E','F','G','H','I','J','K','L','M',
                'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',};
        boolean[] flags=new boolean[letters.length];  //开关数组,每个元素默认是false
        int index;  //letters和flags的下标
        for(int i=0;i<len;i++){  //遍历a数组并给其赋值
            do{
                index=(int)(Math.random()*letters.length); //随机生成letters数组下标
            }while(flags[index]==true); //当开关数组中同下标(位置)元素为true时走循环,为了排除随机生成的字符数组有重复字符
            a[i]=letters[index]; //赋值
            flags[index]=true;  //赋过一次值之后,在flags中该下标的元素变为true
        }       
        return a;  //返回随机字符数组
    }
    //比较随机生成数组和玩家输入数组的方法
    public static int[] check(char[] a,char[] b){
        int[] r=new int[2];  //r[0]代表字符相同个数  r[1]代表位置相同个数
        for(int i=0;i<a.length;i++){  //遍历随机生成字符数组
            for(int j=0;j<b.length;j++){  //遍历玩家输入字符数组
                if(a[i]==b[j]){ //当俩者字符元素相同时
                    r[0]++;  //相同字符个数+1
                    if(i==j){  //下标相同时
                        r[1]++;  //位置相同个数+1
                    }
                    break;
                }
            }
        }                       
        return r;   //返回比较结果
    }       
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值