zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    UVA 11174 Stand in a Line,UVA 1436 Counting heaps —— (组合数的好题)
    UVA 1393 Highways,UVA 12075 Counting Triangles —— (组合数,dp)
    【Same Tree】cpp
    【Recover Binary Search Tree】cpp
    【Binary Tree Zigzag Level Order Traversal】cpp
    【Binary Tree Level Order Traversal II 】cpp
    【Binary Tree Level Order Traversal】cpp
    【Binary Tree Post order Traversal】cpp
    【Binary Tree Inorder Traversal】cpp
    【Binary Tree Preorder Traversal】cpp
  • 原文地址:https://www.cnblogs.com/tangshengwei/p/6143069.html
Copyright © 2011-2022 走看看