一、打印一维数组里只出现一次的数字
数组具体为[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);
}
}