当前位置: 首页 > 知识库问答 >
问题:

输入通过方法后,以下代码不运行

洪浩
2023-03-14

我不是很清楚怎么说这个,但我正在做一个21点游戏,玩家收到2张牌后,他们得到一个Y/N选项来收到另一张牌。我将播放器的响应(Y/N)通过一个方法,该方法在输入无效输入时保持防弹和重新提示,然后将其返回到主代码,以便它将运行。下面是我的防弹方法的代码:

public class Bulletproofing {

public static String bulletproof (String another) throws IOException{
    DataInputStream input = new DataInputStream(System.in);
    
    while(!another.equalsIgnoreCase("Y")&&!another.equalsIgnoreCase("N"))
    {
        System.out.println("That was not a valid choice. Please type a 'Y' or 'N'");
        System.out.print("Would you like another card? Y/N ");
        another = input.readLine();
        
    }
    return another.toString();
    
}

}

我现在遇到的问题是防弹的工作,但是在一个Y/N放进去之后,玩家的卡没有显示出来。这是来自我的主要方法的代码:

System.out.print("Would you like to get another card? Y/N ");
        String another = input.readLine();
        Bulletproofing.bulletproof(another);
        
        //player says yes 
        
        while(another.equalsIgnoreCase("Y") & playerTotal <=21)
        {
            //get card
            
            System.out.print(card[deck.get(nextCard)]);
            value = card[deck.get(nextCard)].getDenom();
            
            if(value==11 || value == 12 || value== 13)
            {
                value = 10;
            }
            
            playerTotal+=value;
            
            //show stats
            System.out.println();
            System.out.println("Player total " + playerTotal);
            nextCard++;
            System.out.println();
            
    //something wrong       //incase player goes over they don't have the choice to get another card
            if(playerTotal< 21)
            {
                System.out.print("Player: Another card? Y/N ");
                another = input.readLine();
                Bulletproofing.bulletproof(another);
            }
            
            else
            {
                another.equals("N");
            }
            count ++;
        }

当播放机输入无效时,程序要求播放机再次输入,但当他们输入y或n时,程序就不能按我想要的方式输出。我希望输出是这样的:

>

  • 您想要另一张卡吗?y/N y

    7钻石

    球员总数:25

    经销商:

    8颗红心

    经销商总数:18

    庄家赢。

    然而,在特定的情况下,例如我输入“I”,然后被重新提示并输入“y”,我将得到如下输出:

    >

  • 您想要另一张卡吗?Y/N i

    输入无效请重新输入:

    你想再要一张卡吗?y/N y

    经销商:

    8颗红心

    经销商总数:18

    庄家赢。

    在这里,玩家的卡没有输出,我有点困惑,如何解决这个问题。

  • 共有1个答案

    牟辰龙
    2023-03-14

    这是因为在main中,您将另一个输入“i”分配给。然后忽略防弹方法的输出。Bulletproof只是循环输入,但您从不为变量赋新值

    将其更改为:

    String another = input.readLine();
    another = Bulletproofing.bulletproof(another);
    

    你为什么不试着调试一下?

     类似资料:
    • 线程“main”org.openqa.selenium.remote.sessionnotfoundexception:命令持续时间或超时:610毫秒构建信息:版本:'2.53.0',修订:'35AE25B',时间:'2016-03-15 17:00:58'系统信息:host:'indc5wwgy1',IP:'10.135.161.85',os.name:'Windows7',os.arch:'a

    • Sales2文件--这是运行代码的文件,让用户输入他们的详细信息来计算并产生每个销售人员的佣金报告。

    • 问题内容: 我有一个看起来像这样的代码: 问题是,一旦执行,在关闭弹出的窗口之前,什么都不会发生。 如何继续运行代码? 问题答案: 那是有意的。您要做的是在调用app.exec()之前使用信号/插槽,Qt类中的代码或生成线程。 信号和插槽是您与Qt交互的实际方式。基本上,信号是任何“事件”或自定义“事件”,并且可以将插槽视为“事件处理程序”。例如,当某人按下GUI上的按钮时,它会创建一个信号,以寻

    • 我正在通过以下命令运行脚本 我无法连接我的Kafka主题和检索信息。我什么都试过了,但没有运气。我正在运行这个简单的代码的文字计数我的生活Kafka流。

    • 正如您在下面的代码中所看到的,当我键入“”时,我希望执行下面的代码行,但实际上并非如此。它不断重复代码“系统”。出来println(“\n请输入一个操作(,-,/,*,=或Q以退出):”;”。这里怎么了?

    • FAQs in section [15]: [15.1] 为什么应该用 <iostream> 而不是传统的 <cstdio>? [15.2] 当键入非法字符时,为何我的程序进入死循环? [15.3] 那个古怪的while (std::cin >> foo)语法如何工作? [15.4] 为什么我的输入处理会超过文件末尾? [15.5] 为什么我的程序在第一个循环后,会忽略输入请求呢? [15.6]