如果语句被调用一次后又跳到其他语句? [英] If statement skipping right to else after being called once?

查看:74
本文介绍了如果语句被调用一次后又跳到其他语句?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在做一个简单的抛硬币游戏,我写了几种方法来调用并使我的主类简短而简单.游戏播放一次后,第一个要求用户输入的If/Else语句将直接跳到Else语句,而不会提示输入.

I'm making a simple coin toss game, and I wrote several methods to call and make my main class short and simple. After the game is played once, the first If/Else statement to ask users for input is jumping right to the Else statement without prompting for input.

package cointoss;
import java.util.Random;
import java.util.Scanner;
public class Game {
int money;
int result;
int bet;

Random rn = new Random();
Scanner in = new Scanner(System.in);

String playerPick;
String aResult;

public void setMoney(int a)
{
    money = a;
}

public int getMoney()
{
    return money;
}

public void getBet()
{
    System.out.println("How much would you like to bet?");
    bet = in.nextInt();
    do{
    if(bet > money)
    {
        System.out.println("You cannot bet more than you have!");
        System.out.println("You have bet " + (bet - money) + " too many coins.");
        continue;
    }
    else
        System.out.println("You have bet " + bet + " coins.");
    }
    while(bet > money);
}
public void getInput()
{


    System.out.println("Pick Heads or Tails");
    playerPick = in.nextLine();
    playerPick.toLowerCase();

    if(playerPick.contains("heads"))
        playerPick ="heads";
    else if(playerPick.contains("tails"))
        playerPick ="tails";
    else
        System.out.println("Invalid Selection");
    }
public void flipCoin()
{
    result = rn.nextInt(2);
    if(result == 0)
    {
        aResult = "heads";
    }
    else
        aResult = "tails";
}

public void checkResult()
{
    if(playerPick.equals(aResult))
    {
        System.out.println("You have won!");
        money += bet;
        System.out.println("You now have " + money + " coins");

    }
    else{
        System.out.println("You have lost!");
        money -= bet;
        System.out.println("You now have " + money + " coins");
    }
}
}

我的测试人员课程:

package cointoss;

public class GameTest {
public static void main(String[] args)
{
    Game coinToss = new Game();
    coinToss.setMoney(100);

    while(coinToss.getMoney() > 0)
    {

    coinToss.getInput();
    coinToss.getBet();
    coinToss.flipCoin();
    coinToss.checkResult();
    }
}
}

推荐答案

您的问题是,每次运行测试程序循环时,您都没有将"in"初始化为新的扫描程序.单个扫描器读取一行输入并将其作为完整答案,而不确认可能还会有其他输入.

Your problem is that you are not reinitializing "in" as a new Scanner every time you run the tester loop. The single scanner reads a line of input and accepts that as the full answer, without acknowledging that there could be further input.

这篇关于如果语句被调用一次后又跳到其他语句?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆