java实现石头剪刀布游戏,>(@#@)<

本文介绍了一个Java实现的石头剪刀布游戏中存在的问题及解决方案。主要错误涉及变量作用域和字符串比较,通过使用`equals`方法解决了字符串内容比较的问题。
摘要由CSDN通过智能技术生成

开始代码存在一些错误,大家可以找一找哦~

package secondchapt;
import java.util.Random;
import java.util.Scanner;

public class StandaloneGame {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String[] move= {"rock","scissors","paper"
				
		};
		//游戏开始
		System.out.println("游戏规则:请以\"rock\",\"scissors\",\"paper\"三选一");
		System.out.println("游戏开始:");
		Scanner scanner=new Scanner(System.in);
		//系统随机的move
		Random random=new Random();
		while(true) {
		int randomindex=random.nextInt(move.length);				
		String comMove=move[randomindex];
				
		//首先我们需要输入自己的动作move
		
		String yourMove=scanner.next();
		
		
		
		
		//判断二者的动作,输出输赢
		
		if(comMove==yourMove) {
			System.out.println("平局/");
		}else if(comMove!=yourMove) {
			if(comMove=="rock"&&yourMove=="scissors") {
				System.out.println("对手出:"+comMove);
				System.out.println("你输了!!!对手胜/");
			}else if(comMove=="paper"&&yourMove=="rock") {
				System.out.println("对手出:"+comMove);
				System.out.println("你输了!!!对手胜/");
			}else if(comMove=="scissors"&&yourMove=="paper") {
				System.out.println("对手出:"+comMove);
				System.out.println("你输了!!!对手胜/");
			}else {
				System.out.println("对手出:"+comMove);
				System.out.println("你赢了!!!对手输/");
			}
			
		}
		
		System.out.println("是否继续游戏?(1)继续,(0)退出");
		int choice=scanner.nextInt();
		if(choice==0) {
			System.out.println("已退出!");
			break;
			
		}
		
		//scanner.close();应该只在循环结束后调用一次,而不是在循环的每次迭代中都调用。
//否则,如果你尝试在退出后再次打开 Scanner,它会抛出一个异常,因为输入流已经被关闭了。
		}	  
		
		scanner.close();
}

}

相信你们一定找出来了吧,给你点个大大的赞!

首先,一定要注意某些变量的作用域。

运行出现了错误:

这里对于判断平局判断不了,原因是我在比较comMove和youtrMove时用到了"==",但在java中,"=="只能用来比较对象的引用是否相等,而不是比较字符串的内容是否相同。

因此,我们用equal来比较两个字符串是否相等。

代码举例:

if(comMove.equal(yourMove)){
    System.out.println("平局");
}

dangdangdang~修改好啦!

修改后代码如下:

package secondchapt;  
  
import java.util.Random;  
import java.util.Scanner;  
  
public class StandaloneGame {  
  
    public static void main(String[] args) {  
        String[] move = {"rock", "scissors", "paper"};  
        System.out.println("游戏规则:请以\"rock\",\"scissors\",\"paper\"三选一");  
        System.out.println("游戏开始:");  
  
        Scanner scanner = new Scanner(System.in);  
        Random random = new Random();  
  
        while (true) {  
            int randomIndex = random.nextInt(move.length);  
            String comMove = move[randomIndex];  
  
            System.out.print("请输入你的动作(rock/scissors/paper):");  
            String yourMove = scanner.next();  
  
            if (comMove.equals(yourMove)) {  
                System.out.println("平局!");  
            } else {  
                if ((comMove.equals("rock") && yourMove.equals("scissors")) ||  
                    (comMove.equals("scissors") && yourMove.equals("paper")) ||  
                    (comMove.equals("paper") && yourMove.equals("rock"))) {  
                    System.out.println("对手出:" + comMove);  
                    System.out.println("你输了!!!对手胜!");  
                } else {  
                    System.out.println("对手出:" + comMove);  
                    System.out.println("你赢了!!!对手输!");  
                }  
            }  
  
            System.out.println("是否继续游戏?(1)继续,(0)退出");  
            int choice = scanner.nextInt();  
            if (choice == 0) {  
                System.out.println("已退出!");  
                break;  
            }  
        }  
  
        scanner.close();  
    }  
}

你可以在你的电脑上试一下咯。

bye have a good day!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值