• day06-java-(方法,猜字符小游戏)


          day05-java-(方法,猜字符小游戏)      


    1.方法:
      1)用于封装一段特定的逻辑功能
      2)方法应尽可能的独立,只干一件事
      3)方法可以被反复的调用多次
      4)避免代码重复,有利于代码的维护,有利于团队的协作开发


    2.方法的定义:
        修饰词 返回值类型 方法名(参数列表){
          方法体
        }


    3.方法的调用:
      1)无返回值: 方法名(有参传参);
      2)有返回值: 数据类型 变量 = 方法名(有参传参);
                  方法名(有参传参);------不建议


    4.return的用法:
      1)return 值; //1.结束方法的执行 2.返回结果给调用方
      2)return;    //1.结束方法的执行


    猜字符小游戏:
    一.设计数据结构:数据
       1)char[] chs;   //随机字符数组
       2)char[] input; //用户输入的字符数组
       3)int[] result; //对比的结果
       4)int score;    //得分
         int count;    //猜错的次数


    二.设计程序结构:方法
       1)主方法:
         public static void main(String[] args){
           //...
         }
       2)生成随机字符数组:
         public static char[] generate(){
           char[] chs = new char[5];
           //...
           return chs;
         }
       3)对比:随机字符数组与用户输入的字符数组
         public static int[] check(char[] chs,char[] input){
           int[] result = new int[2];
           //...
           return result;
         }

    三.设计算法:方法体
       String str = "abcde";
       1)char[] a = str.toCharArray(); //转换为字符数组
       2)str = str.toUpperCase(); //转为大写字母
         str = str.toLowerCase(); //转为小写字母
       3)if(str.equals("ABCDE")){ //判断str内容是否是ABCDE
         }

    实现代码三块功能:
    1.获取随机生成的字符数组chs
    2.让用户猜吧,接收用户输入的字符数组input
    3.对比chs与input,获取结果并显示结果
      若没猜对,则重复第2步开始

    方法可以有返回值也可以没有返回值
      无返回值----返回值类型void
      有返回值----返回值类型写成确切的数据类型


    System.out.println("HelloWorld");
    System.arraycopy(a,1,a1,0,4);
    Arrays.sort(arr);          //无返回值

    int    a = scan.nextInt();
    double b = scan.nextDouble();
    double c = Math.random();
    double d = Math.sqrt(25);
    int[] a1 = Arrays.copyOf(a,6); //有返回值

    质数=素数:只能被1和它本身整除的数

    是质数?-------取余所有都不得0
    不是质数?-----只要有得0的

    5是质数
      5%2/3/4--------------都不得0
    7是质数
      7%2/3/4/5/6----------都不得0
    8不是质数
      8%2/3/4/5/6/7--------有得0
    9不是质数
      9%2/3/4/5/6/7/8------有得0

    平方根:

    sqrt(35)------想求谁的平方根就求谁的平方根
    100的平方根为10
    25的平方根为5
    81的平方根为9

    方法的演示:

    package day06;
    //方法的演示
    public class MethodDemo {
        public static void main(String[] args) {
            //say();
            
            //sayHi(); //编译错误,有参则必须传参
            //sayHi(25); //编译错误,参数类型不匹配
            //sayHi("zhangsan"); //String name="zhangsan"
            //sayHi("lisi"); //String name="lisi"
            //sayHi("wangwu"); //String name="wangwu"
            
            //int a = getNum(); //getNum()的值就是return后的那个值
            //System.out.println(a);
            
            //double b = plus(5.0,6.0); //double num1=5.5,double num2=6.0
            //System.out.println(b); //11.5
            
            double c=5.5,d=6.0;
            double e = plus(c,d); //double num1=5.5,double num2=6.0
            
            //a(); //方法的嵌套调用
            System.out.println("over");
        }
        
        //有参有返回值
        public static double plus(double num1,double num2){
            double num = num1+num2;
            return num; //返回的是num中的那个数
            
            //return num1+num2;
        }
        
        //无参有返回值
        public static int getNum(){
            //return; //编译错误,必须返回一个值
            //return 8.88; //编译错误,返回值类型必须匹配
            return 88; //1.结束方法的执行  2.返回结果给调用方
        }
        
        //有参无返回值
        public static void sayHi(String name){
            System.out.println("大家好,我叫"+name);
            return; //1.结束方法的执行
        }
        
        //无参无返回值
        public static void say(){
            System.out.println("大家好,我叫Freddy");
        }
        
        public static void a(){
            System.out.println(111);
            b();
            System.out.println(222);
        }
        public static void b(){
            System.out.println(333);
        }
    }

    猜字符小游戏:

    package day06;
    import java.util.Scanner;
    //猜字符游戏
    public class Guessing {
        //主方法
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            char[] chs = generate(); //获取随机字符数组
            System.out.println(chs); //作弊
            int count = 0; //猜错的次数
            while(true){ //自造死循环
                System.out.println("猜吧!"); 
                String str = scan.next().toUpperCase(); //获取用户输入的字符串并转换为大写字母
                if(str.equals("EXIT")){ //判断str的内容是否是EXIT
                    System.out.println("下次再来吧!");
                    break;
                }
                char[] input = str.toCharArray(); //将字符串转换为字符数组
                int[] result = check(chs,input); //对比:随机字符数组与用户输入的字符数组
                if(result[0]==chs.length){ //位置对个数为5,意味着猜对了
                    int score = 100*chs.length-10*count; //一个字符100分,猜错一次扣10分
                    System.out.println("恭喜你,猜对了! 总得分为:"+score);
                    break;
                }else{ //猜错了
                    count++; //猜错次数增1
                    System.out.println("字符对个数为:"+result[1]+",位置对个数为:"+result[0]);
                }
            }
            
        }
        
        //生成随机字符数组
        public static char[] generate(){
            char[] chs = new char[5];
            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]; //开关数组(与letters数组相对应)
            for(int i=0;i<chs.length;i++){ //遍历随机字符数组
                int index;
                do{
                    index = (int)(Math.random()*letters.length); //生成0到25之间的随机数
                }while(flags[index]==true); //当index下标对应的开关为true时,表示已存过,则重新生成index下标
                                            //当index下标对应的开头为false时,表示未存过,则index下标可用,循环结束
                chs[i] = letters[index]; //基于index下标到letters中获取字符,并赋值给chs中的每一个元素
                flags[index] = true; //将index下标对应的开关修改为true,表示已存过
            }
            return chs;
        }
        
        //对比:随机字符数组与用户输入的字符数组
        public static int[] check(char[] chs,char[] input){
            int[] result = new int[2]; //0,0---result[0]为位置对,result[1]为字符对
            for(int i=0;i<chs.length;i++){ //遍历随机字符数组
                for(int j=0;j<input.length;j++){ //遍历用户输入的字符数组
                    if(chs[i]==input[j]){ //字符对
                        result[1]++; //字符对个数增1
                        if(i==j){ //位置对
                            result[0]++; //位置对个数增1
                        }
                        break; //input中剩余字符不再比较了
                    }
                }
            }
            return result;
        }
    }
  • 相关阅读:
    软件命名规则
    从命令行git转到Tortoise
    如何让浏览器不解析html?
    说几点我觉得谷歌浏览器不好的地方
    移动端开发:使用jQuery Mobile还是Zepto
    开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
    给大家讲个故事,感受一下什么叫CF。不知道的请认真听。
    cmd中utf-8编码的问题
    web前端关于html转义符的常用js函数
    js实例分析JavaScript中的事件委托和事件绑定
  • 原文地址:https://www.cnblogs.com/tangshengwei/p/6143069.html
Copyright © 2020-2023  润新知