试图弄清楚如何将总分恢复到主要打印出来。它正在显示但未存储在变量中

Posted

技术标签:

【中文标题】试图弄清楚如何将总分恢复到主要打印出来。它正在显示但未存储在变量中【英文标题】:Trying to figure out how to to bring the total score back up to main to print out. It is being displayed but not stored in the variable 【发布时间】:2018-10-01 07:20:56 【问题描述】:

我正在尝试弄清楚如何将总分恢复到主要分数以打印出来。它正在显示但未存储在变量中

这是我的代码中最重要的方法。我试图弄清楚如何返回每个玩家的最终得分,即使这些方法是嵌套的。这应该就像游戏价格是正确的。三个玩家都在旋转***,试图尽可能接近 100。如果他们超过,他们就出局了。我没有包括我的主要方法,但我只是为每个人调用了他们的方法 player()。我已经采用了这种方法,我只需要弄清楚如何将值发送到 main。

public static int player() 

    Scanner inputScanner = new Scanner(System.in); //asks user if they are ready
    String userInput = inputScanner.nextLine();
    if (userInput.equals("yes")) 
        int total = 0;
        total += spinWheel(); //method to spin wheel
        if (total < 100) 
            System.out.println("Would you like to spin again?"); //if < 100 they have the chance to spin again
            userInput = inputScanner.nextLine();
            if (userInput.equals("yes"))  /asks them if they want to spin
            total += spinWheelTwice();
            System.out.println("Final Score is: " + total); //adds to the earlier spin    

             // I want to store the final score in a variable that I can pass back up to main
        

    

【问题讨论】:

忽略随机字母,它不会让我添加更多详细信息 这意味着你需要添加细节 if 块之前声明 total,然后在 if 块之后声明 return total; @ElliottFrisch 我尝试返回总计,但未定义?? @Berger 我也应该声明什么??? 【参考方案1】:

在你的调用方法(main我想你使用)中,只需声明一个从player()返回的变量,即int total = player();

而在player() 中,需要将金额返回给调用方法。但首先,我会在player() 的最顶部声明​​total

您只需在块的末尾返回total 变量。

public static int player() 
    int total = 0; 
    Scanner inputScanner = new Scanner(System.in);
    String userInput = inputScanner.nextLine();
    if (userInput.equals("yes")) 
        total += spinWheel();
        if (total < 100) 
            System.out.println("Would you like to spin again?");
            userInput = inputScanner.nextLine();
            if (userInput.equals("yes")) 
                total += spinWheelTwice();
                System.out.println("Final Score is: " + total);
            
        
    
    return total;

然后,您可以随意使用main 中的total 变量。

编辑:

根据下面的评论,如果您想建议用户在总分 if...else:

if (userInput.equals("yes")) 
    total += spinWheelTwice();
    if (total < 100) 
         System.out.println("You are out of the game");
     else 
         System.out.println("Final Score is: " + total);
    

如果用户没有第二次输入“yes”(也许他们第一次没有输入),您也可能需要它,但如果是这样,那么在第二个嵌套if

例子:

public static int player() 
    int total = 0;
    Scanner inputScanner = new Scanner(System.in);
    String userInput = inputScanner.nextLine();
    if (userInput.equals("yes")) 
        total += spinWheel();
        if (total < 100) 
            System.out.println("Would you like to spin again?");
            userInput = inputScanner.nextLine();
            if (userInput.equals("yes")) 
                total += spinWheelTwice();
                if (total < 100) 
                    System.out.println("You are out of the game");
                 else 
                    System.out.println("Final Score is: " + total);
                
             else 
                System.out.println("You are out of the game");
            
        
    
    return total;

【讨论】:

没有理由在 if 语句中返回总计。在这种情况下,在方法结束时返回一次就足够了。 感谢您的帮助,这帮助很大!假设我想再添加一个 if 语句 if (total 【参考方案2】:

您的问题是您在 if 范围内声明了 total 变量,这意味着变量 total 无法从该范围外访问。 total要返回,需要在作用域外声明。

if (userInput.equals("yes")) 
    int total = 0;
    // ...
 
return total; // this is unreachable

应该是

int total = 0;
if (userInput.equals("yes")) 
    // ...

return total;

回答你的问题,

public static int player() 
    System.out.println("Are you ready? (yes/no)");
    Scanner inputScanner = new Scanner(System.in);
    String userInput = inputScanner.nextLine();
    int total = 0;
    if (userInput.equals("yes")) 
        total = spinWheel();
        System.out.println("You spun " + total);
        if (total < 100) 
            System.out.println("Would you like to spin again?");
            userInput = inputScanner.nextLine();
            if (userInput.equals("yes")) 
                total += spinWheelTwice();
            
        
    
    return total;



public static void main(String... args) 
    int total = YourClassName.player();
    System.out.println("Final Score is: " + total);

这样的代码会唤起美好的回忆

【讨论】:

以上是关于试图弄清楚如何将总分恢复到主要打印出来。它正在显示但未存储在变量中的主要内容,如果未能解决你的问题,请参考以下文章

C# 试图弄清楚如何将负值合并到我的代码中

试图弄清楚如何使用列表返回数据框中每一列的平均值

我试图弄清楚如何将 dbus 与 pidgin 一起使用

绑定到 DataTable 的 DataGridView 未显示

我如何从JS与Swift进行通信

漂亮打印到文件?