Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 纸石剪刀游戏,可能我的代码中缺少一些东西_Java - Fatal编程技术网

Java 纸石剪刀游戏,可能我的代码中缺少一些东西

Java 纸石剪刀游戏,可能我的代码中缺少一些东西,java,Java,我两三天前开始学习用java编程,并决定尝试编写一个简单的石头剪刀游戏。 它不会运行,我想我要么没有包含一些重要的代码,要么整个事情都是垃圾。 谢谢你的帮助 公共类游戏{ 公共静态void main(字符串[]args){ String personPlay;//用户的播放;R、P或s 字符串computerPlay=“”;//计算机的播放,以及R、P或s int computerInt;//随机生成的数字以确定计算机是否播放 字符串响应; 扫描仪扫描=新扫描仪(System.in); 随机生成

我两三天前开始学习用java编程,并决定尝试编写一个简单的石头剪刀游戏。 它不会运行,我想我要么没有包含一些重要的代码,要么整个事情都是垃圾。 谢谢你的帮助

公共类游戏{
公共静态void main(字符串[]args){
String personPlay;//用户的播放;R、P或s
字符串computerPlay=“”;//计算机的播放,以及R、P或s
int computerInt;//随机生成的数字以确定计算机是否播放
字符串响应;
扫描仪扫描=新扫描仪(System.in);
随机生成器=新随机();
System.out.prinln(“让我们玩石头、布、剪刀!\n”+“输入一个动作:\n”+“R=石头、P=布、s=剪刀”);
System.out.println();

computerInt=generator.nextInt( if(personPlay.equals(computerPlay)) System.out.println(“打成平局了!”); else if(personPlay.equals(“R”)) if(computerPlay.equals(“S”)) System.out.println(“石头压碎剪刀!你赢了!”); else如果(personPlay.equals(“S”)) if(computerPlay.equals(“P”)) System.out.println(“剪刀剪纸!你赢了!”); else if(personPlay.equals(“P”)) if(computerPlay.equals(“R”)) System.out.println(“纸包裹石头!你赢了!”); else if(personPlay.equals(“R”)) if(computerPlay.equals(“P”)) System.out.println(“纸包裹石头!你输了!”); else if(personPlay.equals(“P”)) if(computerPlay.equals(“S”)) System.out.println(“剪刀剪纸!你输了!”); else如果(personPlay.equals(“S”)) if(computerPlay.equals(“R”)) System.out.println(“石头压碎剪刀!你输了!”); else System.out.println(“无效用户输入,请重试!”); } }
我看到您共享的代码中有几个错误:

  • 在语句“System.out.prinln(“让我们玩石头、布、剪刀!\n”+“输入一个动作:\n”+“R=石头、p=布、s=剪刀”) ,它应该是System.out.println()。您有拼写错误(“print”中缺少“t”)

  • 您需要初始化变量“personPlay”才能编译代码。需要初始化局部变量,因为它们不采用默认值


  • 语句缺少右括号:“computerInt=generator.nextInt(”

  • 修复这些问题,可以让代码编译。
    我建议对每个if、else-if或else条件使用大括号,这样可以使代码看起来整洁。此外,还有一长串嵌套的if-else条件,很难读取和调试(如果出现任何问题)。尝试从简单的条件开始,然后分步骤构建逻辑,避免出现许多if-else条件。

    我看到您共享的代码中有几个错误:

  • 在语句“System.out.prinln(“让我们玩石头、布、剪刀!\n”+“输入一个动作:\n”+“R=石头、p=布、s=剪刀”) ,它应该是System.out.println()。您有拼写错误(“print”中缺少“t”)

  • 您需要初始化变量“personPlay”才能编译代码。需要初始化局部变量,因为它们不采用默认值


  • 语句缺少右括号:“computerInt=generator.nextInt(”

  • 修复这些问题,可以让代码编译。
    我建议对每个if、else-if或else条件使用大括号,这样可以使代码看起来整洁。此外,还有一长串嵌套的if-else条件,很难读取和调试(如果出现任何问题)。试着从简单的条件开始,然后分步骤构建逻辑,避免这些“如果其他条件存在”的情况。

    我相信这回答了你的问题:

    import java.util.Scanner;
    
    public class Game {
        public static void main(String[] args) {
            String personPlay; //User's play; either R, P or S
            String computerPlay = ""; //Computer's play, R, P or S as well
            String response;
            
            Scanner scan = new Scanner(System.in);
            
            System.out.println("Let's play Rock, Paper, Scissors!\n" + "Enter a move: \n" + "R = Rock, P = Paper, S = Scissors");
            System.out.print("Player > ");
            personPlay = scan.nextLine();
    
            System.out.print("Computer > ");
            String options [] = {"R","P","S"};
            computerPlay = options[(int)(Math.random()*3)];
            System.out.println(computerPlay);
            
            
            if (personPlay.equals(computerPlay)) {
                System.out.println("It's a tie!");
            }
            else if (personPlay.equals("R")) {
                if (computerPlay.equals("P")) {
                    System.out.println("Paper wraps Rock! You lose!");
                }
                else if (computerPlay.equals("S")) {
                    System.out.println("Rock crushes Scissors! You win!");
                }
            }
            else if (personPlay.equals("P")) {
                if (computerPlay.equals("R")) { 
                    System.out.println("Paper wraps Rock! You win!");
                }
                else if (computerPlay.equals("S")) {
                    System.out.println("Scissors cut Paper! You lose!");
                }
            }
            else if (personPlay.equals("S")) {
                if (computerPlay.equals("R")) {
                    System.out.println("Rock crushes Scissors! You lose!");
                }
                else if (computerPlay.equals("P")) {
                    System.out.println("Scissors cut Paper! You win!");
                }
            }
            else { System.out.println("Invalid user imput, please try again!"); }
        }
    }
    
    您的代码存在一些问题,大多数问题已经被其他用户指出。我只想补充一点,您编写这些if/else语句的方式永远不会输入其中一些。
    我现在没有太多时间,但如果您在看到此答案后仍有任何疑问,请留下评论,我会尽快回答。

    我相信这回答了您的问题:

    import java.util.Scanner;
    
    public class Game {
        public static void main(String[] args) {
            String personPlay; //User's play; either R, P or S
            String computerPlay = ""; //Computer's play, R, P or S as well
            String response;
            
            Scanner scan = new Scanner(System.in);
            
            System.out.println("Let's play Rock, Paper, Scissors!\n" + "Enter a move: \n" + "R = Rock, P = Paper, S = Scissors");
            System.out.print("Player > ");
            personPlay = scan.nextLine();
    
            System.out.print("Computer > ");
            String options [] = {"R","P","S"};
            computerPlay = options[(int)(Math.random()*3)];
            System.out.println(computerPlay);
            
            
            if (personPlay.equals(computerPlay)) {
                System.out.println("It's a tie!");
            }
            else if (personPlay.equals("R")) {
                if (computerPlay.equals("P")) {
                    System.out.println("Paper wraps Rock! You lose!");
                }
                else if (computerPlay.equals("S")) {
                    System.out.println("Rock crushes Scissors! You win!");
                }
            }
            else if (personPlay.equals("P")) {
                if (computerPlay.equals("R")) { 
                    System.out.println("Paper wraps Rock! You win!");
                }
                else if (computerPlay.equals("S")) {
                    System.out.println("Scissors cut Paper! You lose!");
                }
            }
            else if (personPlay.equals("S")) {
                if (computerPlay.equals("R")) {
                    System.out.println("Rock crushes Scissors! You lose!");
                }
                else if (computerPlay.equals("P")) {
                    System.out.println("Scissors cut Paper! You win!");
                }
            }
            else { System.out.println("Invalid user imput, please try again!"); }
        }
    }
    
    您的代码存在一些问题,大多数问题已经被其他用户指出。我只想补充一点,您编写这些if/else语句的方式永远不会输入其中一些。
    我现在没有太多时间,但是如果你在看到这个答案后仍然有任何疑问,请留下评论,我会尽快回答。

    如果条件a,如果条件a…你看到这个逻辑有什么缺陷吗?你有几个。你刚刚开始。从一开始就开始。不,在这里跳到最深处不是一件明智的事情。开始使用if语句中的{}块computerprint=generator.nextInt()将为您提供一个int,而不是R、P或S。您是否缺少一些代码?如果您嵌套if语句,其中一些语句附加了else,请使用大括号
    {}
    。否则很难弄清楚会发生什么。事实上,只要始终使用大括号。省略大括号并不会节省任何精力。您有一个
    系统.out.prinln
    (缺少
    t
    )。您缺少
    );
    用于
    computerInt=generator.nextInt(
    。正如其他人所指出的,您缺少为播放机和计算机获取字符串值的代码。请告诉我们“它不会运行”是什么意思:这是编译错误吗?运行时错误吗?你收到了什么错误消息?如果条件a,如果条件a…你看到这个逻辑是如何有缺陷的吗?你有几个这样的逻辑。你刚刚开始。从一开始就开始。不,在这里跳入深层不是一件明智的事情。开始使用{}if语句中的块computerprint=generator.nextInt()将为您提供