开始代码存在一些错误,大家可以找一找哦~
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!