day05

day05

方法传参

C++注释:C++有值调用和引用调用。引用参数标有&符号。例如,可以轻松地实现void tripleValue(double&x)方法或void swap(Employee&x,Employee&y)方法实现修改它们的引用参数的目的。

Java程序设计语言总是采用按值调用。也就是说,方法得到的是所有参数值的一个拷贝,特别是,方法不能修改传递给它的任何参数变量的内容。Java程序设计语言对对象采用的不是引用调用,实际上,对象引用是按值传递的。

方法的重载

Java允许重载任何方法,而不只是构造器方法。因此,要完整地描述一个方法,需要指出方法名以及参数类型。这叫做方法的签名(signature)。返回类型不是方法签名的一部分。也就是说,不能有两个名字相同、参数类型也相同却返回不同类型值的方法

构造器调用另一个构造器

关键字this引用方法的隐式参数。然而,这个关键字还有另外一个含义。

如果构造器的第一个语句形如this(...),这个构造器将调用同一个类的另一个构造器。

C++注释:在Java中,this引用等价于C++的this指针。但是,在C++中,一个构造器不能调用另一个构造器。在C++中,必须将抽取出的公共初始化代码编写成一个独立的方法。

对象析构与finalize方法

有些面向对象的程序设计语言,特别是C++,有显式的析构器方法,其中放置一些当对象不再使用时需要执行的清理代码。在析构器中,最常见的操作是回收分配给对象的存储空间。由于Java有自动的垃圾回收器,不需要人工回收内存,所以Java不支持析构器。

某些对象使用了内存之外的其他资源,例如,文件或使用了系统资源的另一个对象的句柄。在这种情况下,当资源不再需要时,将其回收和再利用将显得十分重要。

可以为任何一个类添加finalize方法。finalize方法将在垃圾回收器清除对象之前调用。

return的作用

return一旦执行,方法立即结束

return可以用在无返回值的方法中,作用是:立即跳出并结束当前方法的执行

x 1package day_06;2​3import java.util.Arrays;4import java.util.Random;5import java.util.Scanner;6​7public class day06_demo08 {8    //   模拟双色球:用户投注一组号码9//   6个红球号码的范围是1-33之间,且不能重复;1个蓝球号码的范围在:1-16之间。10    public static void main(String[] args) {11        int[] userNumbers = userSelectNumbers();12        int[] luckNumbers = createLuckNumbers();13        judge(userNumbers,luckNumbers);14   }15// - 6个红球+1个蓝球 ,奖金1000万16//- 6个红球+0个蓝球,奖金500万17//- 5个红球+1个蓝球,奖金3000块18//- 5个红球+0个蓝球,或者4个红球+1个蓝球,奖金200块19//- 4个红球+0个蓝球,或者3个红球+1个蓝球,奖金10块20//- 小于3个红球+1个蓝球,奖金5块21//- 如果前面的都不成立,就中奖,算你为福利事业做贡献了。22//用户投注一组号码(前6个是红球,最后一个是篮球),并返回用户投注的号码23​24   public static int[] userSelectNumbers() {25        int[] arr = new int[7];26        int red = 6;//信标27        while(red != 0){28            Scanner scanner = new Scanner(System.in);29            System.out.println("请输入一组要投注的红球号码(1-33之间,不能重复)😊;30            label:for (int i = 0; i < arr.length - 1; i++){//循环遍历填充数组31                    int number = scanner.nextInt();32                    if (number > 33 || number < 1){//如果超范围,则重置数组和信标33                        System.out.println("红球号码的范围是1-33之间,请重新输入:");34                        red = 6;35                        Arrays.fill(arr,0);36                        break;37                   }else {38                        for (int j = 0;j<= i;j++){//如果有重复数据,则重置数组和信标39                            if (arr[j] == number){40                                System.out.println("不能有重复号码!请重新输入:");41                                red = 6;42                                Arrays.fill(arr,0);43                                break label;44                           }45                       }46                        arr[i] = number;47                        red--;48                   }49               }50       }51​52        System.out.println("请输入要投注的蓝球号码:");53        int blue = 1;54        while (blue!=0){55            Scanner scanner = new Scanner(System.in);56            int number = scanner.nextInt();57            if (number>16 || number<0 ){58                System.out.println("蓝球号码的范围是1-16之间,请重新输入:");59           }else{60                arr[arr.length-1]=number;61                blue--;62           }63       }64        System.out.println("下注的号码组为: "+Arrays.toString(arr));65        return arr;66   }67​68    public static int[] createLuckNumbers() {69        int[] arr = new int[7];70        int red = 6;71        int blue = 1;72        Random random = new Random();73        for (int i = 0;i<red;i++){74            arr[i] = random.nextInt(33)+1;75       }76        arr[arr.length-1] = random.nextInt(16)+1;77        System.out.println("开奖的号码组为: "+Arrays.toString(arr));78        return arr;79   }80​81// - 6个红球+1个蓝球 ,奖金1000万82//- 6个红球+0个蓝球,奖金500万83//- 5个红球+1个蓝球,奖金3000块84//- 5个红球+0个蓝球,或者4个红球+1个蓝球,奖金200块85//- 4个红球+0个蓝球,或者3个红球+1个蓝球,奖金10块86//- 小于3个红球+1个蓝球,奖金5块87//- 如果前面的都不成立,就中奖,算你为福利事业做贡献了。88​89    public static void judge(int[] userNumbers, int[] LuckNumbers) {90        int red = 0;//红球相等个数91        if (userNumbers[userNumbers.length-1] == LuckNumbers[LuckNumbers.length-1]){//如果蓝色球一样,再遍历红色球一样的个数92            for (int i = 0;i<userNumbers.length-1;i++){93                for (int j = 0;j<LuckNumbers.length-1;j++){94                    if (userNumbers[i]LuckNumbers[j]){95                        red++;96                   }97               }98           }99            switch (red){100                case 6:101                    System.out.println("奖金1000万");102                    break;103                case 5:104                    System.out.println("奖金3000块");105                    break;106                case 4:107                    System.out.println("奖金200块");108                    break;109                case 3:110                    System.out.println("奖金10块");111                    break;112                default:113                    System.out.println("奖金5块");114           }115       }else{116            for (int i = 0;i<userNumbers.length-1;i++){117                for (int j = 0;j<LuckNumbers.length-1;j++){118                    if (userNumbers[i]LuckNumbers[j]){119                        red++;120                   }121               }122           }123            switch (red){124                case 6:125                    System.out.println("奖金500万");126                    break;127                case 5:128                    System.out.println("奖金3000块");129                    break;130                case 4:131                    System.out.println("奖金10块");132                    break;133                default:134                    System.out.println("你为福利事业做贡献了");135           }136       }137   }138}java

posted @   萌新小夏  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示