java 数组综合运用

一、打印一维数组里只出现一次的数字

数组具体为[12,34,34,12,45,36,23,45]

思路:使用异或,相同数字异或为0,与0异或数据是本身,即n^n=0,0^n=n

具体操作:

import java.util.Arrays;
public class ChArray{
    public static void main(String[] args){
        int temp=0;
        int [] arr = new int[]{34,45,45,23,23,34,12};
        for (int i = 0;i < arr.length;i++){
            temp = temp^arr[i]; //注意这个只适用于唯一出现一次的,如果有两个数都只出现一次是不适用的
        }
        System.out.println("只出现一次的数字是:" + temp)

    }
}

二、打地鼠案例

要求:1.展示游戏欢迎的字符串。2.创建一个char的数组,作为洞穴,洞穴中的元素全部为0,洞穴个数随机【2~9之间】。3.游戏循环5次,每次展示洞穴时也只展示第一行洞穴的序号。4.随机角标,地鼠随机出现为“x”。5.提示玩家击打,玩家输入对应序号进行击打。6.判断是否击中,击中得2分,未击中扣1分(乱输入数字也视为没打中)。7.游戏结束,统计击中次数,未击中次数,统计得分。8.中途可以按99重新开始,按88退出游戏。

import java.util.Arrays;
import java.util.Scanner;
public class BeatGopher{
    public static void main(String[] args{
        System.out.println("欢迎进入打地鼠挑战"+"\n"+"您有5次机会,击中得两分,未击中扣1分,按99重新开始,按88则可退出游戏");
        Random random = new Random();
        Scanner input = new Scanner(System.in);
        double score = 0;
        int count = 0;

        int col = random.nextInt(8)+2;
        char[] arr = new char[9];
        for (int i = 0;i< arr.length; i++){
            arr[i] = 'O'; //对数组进行赋值
        }
        System.out.println();
        for (int j=1;j<=5;j++){
            // 打印地图
            for (int i = 0;i < arr.length; i++){
                System.out.print((i+1) + " ");
            }
            System.out.println();
            int index = random.nextInt(arr.length);
            arr[index] = 'X';
            // 打印
            for (int i = 0;i < arr.length; i++){
                System.out.print(arr[i] + " ");
            }
            System.out.println();
            // 开打
            System.out.println("玩家请输入一个gopher的index");
            int i = input.nextInt();
            if( i >=0 || i<=arr.length ){
                if( i==index){
                    score+=2;
                    count +=1;
                    System.out.println("打中,当前分值为"+score);
                }else{
                    System.out.println("没有打中");
                    score-=1;
                }
            }else if (i==88){
                break;
            }else if(i==99){
                System.out.println("重新开始!");
                j=1;
            }else{
                System.out.println("没有打中");
                score-=1;
            }
            // 要把X的位置换成O
            arr[index]= 'O';
            System.out.println("是否继续,不玩请输入88");
        }
        System.out.println("游戏结束!"+"\n"+"总分为 "+score+"\n"+"打中次数为 "+count);

    }
}

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值