首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在java的while循环中设置switch语句

如何在java的while循环中设置switch语句
EN

Stack Overflow用户
提问于 2011-02-28 10:55:42
回答 3查看 43.6K关注 0票数 11

我想在while循环中做一个switch,在每一个switch语句的中断处,while循环停止并请求一个像F,R,C,Q这样的输入。下面的语句可以工作,但是语句不会中断。请帮帮忙

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) throws IOException {

    // start both with 1 point
    int goodTotal = 50;
    int monTotal = 50;

    // input switch statement

    while (goodTotal > 0 && monTotal > 0) {

        System.out.print("Type a letter: ");
        System.out.println("\n");
        System.out.print("F: Go out and Fight ");
        System.out.println("\n");
        System.out.print("R: Rest ");
        System.out.println("\n");
        System.out.print("C: Check Stats ");
        System.out.println("\n");
        System.out.print("Q: Quit ");
        int input = System.in.read();

        System.out.println("You typed: " + (char) input);

        switch (input) {
        case 'f':
            System.out.println("Continue the game");
            break;
        case 'r':
            System.out.println("Players should rest");
            break;
        case 'c':
            System.out.println("Checking the status of the game");
            System.out.print("Goodman has " + goodTotal + " points and Monster has " + monTotal + " points");
            System.out.println("\n");
            break;
        case 'q':
            System.out.println("Game over");
            System.exit(input);
            break;
        default:
            System.out.println("Invalid selection");
            break;
        }

        // Set value of minimum and maximum damage
        int minDmg = 2;
        int maxDmg = 15;

        // Get random number;
        int damage = minDmg + Double.valueOf(Math.random() * (maxDmg - minDmg)).intValue();
        int damage2 = minDmg + Double.valueOf(Math.random() * (maxDmg - minDmg)).intValue();

        // remove value of damage from started value to get total value remaining
        goodTotal = goodTotal - damage;
        monTotal = monTotal - damage2;

        // print message if still in the game
        if (goodTotal > 0) {
            System.out.println("Goodman has " + goodTotal + " points left. Not bad, Man! ");
        }

        // if Goodman survives round 2 print a message of encouragement
        if (goodTotal > 0 && count > 1 && count <= 2) {
            System.out.print("This is encouraging. Goodman has lasted past roundhh " + count + ". ");

            // print new message if Goodman passes round 3
        } else if (goodTotal > 0 && count == 3) {
            System.out.print("Goodman is as strong as Samson. He has lasted round " + count
                    + " and still looks strong.");
            System.out.print(" 10 hit points has been added to your total");
        }

        if (monTotal > 0) {
            System.out.println("Wait, Monster has a total of " + monTotal + " points and is still in the game");
        }

        // exit if have less than 0 point, and print game over. Congratulate the winner
        if (goodTotal < 0) {
            System.out.println("Goodman you are out of the game");
            System.out.println("The monster will take over the village. This is sad");
            System.out.println("Game Over!");
        } else if (monTotal < 0) {
            System.out.println("Goodman has been victorious");
            System.out.println("The monster is dead. The people live!!!!");
            System.out.println("Game Over!");
        }
        System.out.println("This is the end of round " + count + " ");
        System.out.println("\n");
        count = count + 1;

    }

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-28 11:00:01

在循环上使用标签:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
loop: while (goodTotal > 0 && monTotal > 0) {
    // ...
    switch (input) {
        case 'f':
            // ...
            break loop;
        case 'r':
            // ...
            break loop;
        // ...
    }
    // ...
}
票数 19
EN

Stack Overflow用户

发布于 2011-02-28 10:58:28

您应该使用labelled breaks.

尽管以一种不需要它们的方式重写代码可能更好,因为它们不太容易阅读。

票数 6
EN

Stack Overflow用户

发布于 2011-02-28 11:08:37

input的类型为int,但大小写标签是字符文字(即f,r,c,q)。为什么不让input也成为char类型呢?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char input = System.in.read();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5141070

复制
相关文章
如何在Java中避免equals方法的隐藏陷阱(二)
陷阱3:建立在会变化字段上的equals定义 让我们在Point类做一个非常微小的变化 public class Point { private int x; private int y; public Point(int x, int y) { this.x = x; this.y = y; } public int getX() { return x; } public int getY() {
java达人
2018/01/31
1.7K0
如何在Java中避免equals方法的隐藏陷阱(一)
常见的等价方法陷阱 java.lang.Object 类定义了equals这个方法,它的子类可以通过重载来覆盖它。不幸的是,在面向对象中写出正确的equals方法是非常困难的。事实上,在研究了大量的Java代码后,2007 paper的作者得出了如下的一个结论: 几乎所有的equals方法的实现都是错误的! 这个问题是因为等价是和很多其他的事物相关联。例如其中之一,一个的类型C的错误等价方法可能意味着你无法将这个类型C的对象可信赖的放入到容器中。比如说,你有两个元素elem1和elem2他们都是类型C的对象
java达人
2018/01/31
1.8K0
用 PyQt 打造具有专业外观的 GUI
如果您一直在创建表单以执行将数据输入数据库等操作,那么QFormLayout适合您。此类将小部件布置为两列布局。第一列通常显示描述预期输入的标签,第二列通常包含允许用户输入或编辑数据的输入小部件,例如QLineEdit,QComboBox或QSpinBox。
sergiojune
2021/07/19
2.8K0
用 PyQt 打造具有专业外观的 GUI
如何避免 Java 中的“NullPointerException”
NullPointerException (NPE) 是 Java 中最常见的异常。此异常的原因是已知的,但在大多数情况下,开发人员更愿意忽略它并且不采取任何措施。我个人认为这种行为的原因如下:
终码一生
2022/04/15
2.9K0
如何避免 Java 中的“NullPointerException”
Qt Designer中的QWidget属性表介绍
2、disambiguation消除歧义(澄清):这是当有多个需要翻译文字的对象有相同文字时,避免出现歧义而额外添加的消除歧义字符,缺省为空,一般歧义字符设置为其所在对象对应类的名字,此消歧参数是为转换器指定注释的首选方法。
Elsa_阿尼
2021/07/20
11.4K0
Qt Designer中的QWidget属性表介绍
11.QT-布局管理器(Box,Grid,Form,Stacked)
布局管理器简介 QT中提供了对界面组件进行布局管理的类,用于对界面组件进行管理, 能够自动排列窗口中的界面组件 窗口大小变化后,便会自动更新界面组件的大小。 布局管理器可以自定义,从而达到更加个性化界
诺谦
2018/05/28
1.7K0
Go中的死锁以及如何避免
死锁是指两个或更多的进程永久性地互相等待对方释放资源的情况。这通常发生在每个进程都持有至少一个资源,但又需要另一个当前被其他进程持有的资源才能继续执行。
运维开发王义杰
2023/08/10
5000
Go中的死锁以及如何避免
如何隐藏table 中的指定列?
如何隐藏table 中的指定列?当页面需要显示的内容太多,而页面宽度又不够,不想内容显示太混乱,常常会将指定的列暂时隐藏掉,那么如何让实现呢?
爱明依
2019/03/12
6.9K0
MyEclipse中如何隐藏关闭的项目?
问题描述:   我们有很多已经关闭的项目,不想让它显示,该如何办呢?如下图所示: 操作步骤: 效果如下:
黑泽君
2018/10/11
1.3K0
MyEclipse中如何隐藏关闭的项目?
将外部窗体程序嵌入到QWidget中
下列代码例子中实现的将窗体名字为Example的窗体嵌入到QWidget中。 #include <QApplication> #include <QWindow> #include <QWidget> #include <windows.h> int main(int argc, char *argv[]) { QApplication a(argc, argv); WId winId = (WId)FindWindow(NULL, L"Example"); QWindow *
Qt君
2023/03/17
1.5K0
将外部窗体程序嵌入到QWidget中
用Qt写软件系列五:一个安全防护软件的制作(3)
引言        上一篇中讲述了工具箱的添加。通过一个水平布局管理器,我们将一系列的工具按钮组合到了一起,完成了工具箱的编写。本文在前面的基础上实现窗体分割效果、堆栈式窗口以及Tab选项卡。 窗体分割        窗体分割是一个常见的功能,尤其在一些IDE中用的非常广泛。主要是窗体分割能够在视觉上对程序功能进行分组分类,在保证界面美观的同时还能保证内容井井有条,何乐而不为呢?Qt中提供了一个用于分割窗体的类:QSplitter。这个类的使用也非常简单,准备好需要分割的窗口,设置好分割方向和比例即可。不过
24K纯开源
2018/01/18
1.8K0
用Qt写软件系列五:一个安全防护软件的制作(3)
如何理解Java中的隐藏与覆盖
http://blog.csdn.net/yangquanhui1991/article/details/49679557
bear_fish
2018/09/20
3.2K0
如何使用 Python 隐藏图像中的数据
秘密数据可以是任何格式的数据,如文本甚至文件。简而言之,隐写术的主要目的是隐藏任何文件(通常是图像、音频或视频)中的预期信息,而不实际改变文件的外观,即文件外观看起来和以前一样。
小白学视觉
2022/02/14
4K0
如何使用 Python 隐藏图像中的数据
【头条】如何隐藏页面中的某个元素
透明度为0,仍在文档流中,当作用于其上的事件(如点击)无效,这也是 visibility:hidden 与 opacity: 0 的区别
山月
2021/04/07
3.2K0
【头条】如何隐藏页面中的某个元素
如何在onCreate中获取View的高度和宽度
在开发过程中经常需要获取到View的宽和高,可以通过View.getWidth()和View.getHeight()来得到宽高。然而新手们经常在onCreate方法中直接调用上面两个方法得到的值是0!
阳仔
2019/07/31
5.4K0
QT软件开发:解决隐藏QWidget标题栏后窗体无法移动问题
一般自定义标题栏时,就需要将原窗口的标题栏隐藏掉。默认情况下窗口无法被鼠标拖动的,需要自己处理鼠标事件,移动窗口达到拖动效果。
DS小龙哥
2022/01/12
1.8K0
如何避免微服务设计中的耦合问题
译自:How to Avoid Coupling in Microservices Design
charlieroro
2021/03/02
1.7K0
如何避免微服务设计中的耦合问题
信息隐藏拓展压缩包隐藏图片里面
提示:这样就完成了 打开图片正常显示 图片存储内存加大 修改为你添加的压缩格式 即可打开压缩包里的内容
团团生活志
2022/08/16
8650
信息隐藏拓展压缩包隐藏图片里面
如何在 ClickHouse 中避免深度分页问题
在日常的业务场景中,我们经常会遇到查询 TOP N 的需求。在 ClickHouse 中,一种常见的实现 TOP N 的 SQL 模板如下所示:
Nauu
2020/05/29
8.7K1
点击加载更多

相似问题

将QWidget隐藏在不同的QWidget中

13

QSortFilterProxyModel隐藏QWidget

12

自动调整QWidget高度

24

Qt QWidget隐藏动画

210

如何避免QWidget消失在视线之外

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文