有人查看了我的一个猜数字游戏的源代码,该游戏似乎一直失败[已关闭]

问题描述 投票:0回答:3

您好,请有人运行我的代码并协助我调试它。我在尝试解决这个问题时遇到了很多麻烦,而且在编码方面我没有太多指导。

我的代码现在的问题是它运行某些部分两次。请注释问题和任何 建议修复它。预先感谢

我正在尝试做的事情的简介: 猜数字游戏 这个想法是计算机将生成一个随机数并询问用户是否知道该数字 如果用户得到正确的答案,他们将收到一条祝贺消息,然后游戏将结束,但如果用户 输入错误的号码,他们会收到重试消息,然后他们会重试

import javax.swing.*;

import java.lang.*;

public class Main {

public static void main(String[] args) {
   /*
   number guessing game
   the idea is that the computer will generate a random number and will ask the user if they know the number
   if the user gets the answer correct they will get a congrats message and then the game will end but if the user
   enters a wrong number they get a try again message and then they will try again

   the problem with my code right now is that it runs certain parts twice. please annotate the issue and any
   recomendations to fix it. Thanks in advance
    */

    enterScreen();
    if (enterScreen() == 0){
        number();
        userIn();
        answer();
    }


}
public static int enterScreen (){
   String[] options = {"Ofcourse", "Not today"};
    int front = JOptionPane.showOptionDialog(null,
            "I'm thinking of a number between 0 and 100, can you guess what is is?",
            "Welcome",
            JOptionPane.YES_NO_OPTION,
            JOptionPane.PLAIN_MESSAGE,
            null, options, "Yes" );
    if(front == 0){
        JOptionPane.showMessageDialog(null, "Goodluck then, you might need it. :D");
    }
    else {
        JOptionPane.showMessageDialog(null, "okay i dont mind");
    }

    return front;
}
private static int number(){

    double numD;
    numD = (Math.random() * Math.random()) * 100;
    int numI = (int) numD;
    System.out.println(numD);

    return numI;
}
private static int userIn(){
    String userStr = JOptionPane.showInputDialog("What number do you think im thinking of?");
    int user = Integer.parseInt(userStr);

    return 0;
}
private static void answer(){
    // here is the problem
    if(userIn() == number()){
        JOptionPane.showMessageDialog(null, "Well done! You must be a genius.");
    }
    else {
        JOptionPane.showMessageDialog(null, "Shame, TRY AGAIN!");
        userIn();
    }
}

}

java object if-statement joptionpane
3个回答
2
投票

你的问题是这部分:

        enterScreen();
        if (enterScreen() == 0) {
            number();
            userIn();
            answer();
        }

您可以省略第一个

enterScreen()
。因为你在if语句中再次调用了它。如果你看一下该方法的返回类型:
public static int
,它返回 int。这使得该方法的结果可以直接在 if 语句中获得。拳头
enterScreen
基本上没什么用,因为你不使用结果。 你可以这样做:

int num = enterscreen();
if (num == 0) {
            number();
            userIn();
            answer();
        }

这与以下内容基本相同:

if (enterScreen() == 0) {
            number();
            userIn();
            answer();
        }

0
投票

您调用

enterScreen()
userIn()
函数两次或更多次。请计算机科学和编码。 提示:计算机从上到下执行指令。


0
投票

您拨打

enterScreen()
两次。只需调用一次,并比较仅返回一次的值。

© www.soinside.com 2019 - 2024. All rights reserved.