打印两次

2024-01-30

我出于教学目的编写了一个简单的程序,除了打印出名称和您选择的计算答案的部分之外,一切正常。 if 语句似乎执行了两次,就好像它在前进之前向后退了一步。

它将打印出“您想继续吗”,但不会提示用户输入是/否,而是会再次打印出计算的答案,然后询问他们是否愿意继续,除非第二次实际上会等待输入。

提前致谢。

这是我的代码:

import java.util.Scanner;

public class Numbers
{
    public static void main(String[] args)
    {
        Scanner reader = new Scanner(System.in);

        boolean cont;
        String name, yorn;
        double num1, num2, answer;
        int choice, iterator = 0;

        System.out.print("What is your name? ");
        name = reader.nextLine();

        System.out.print("Please enter a number: ");
        num1 = reader.nextDouble();
        if(num1%2 != 0)
        {
            System.out.println(name + ", the number uou entered, " + num1 + ", is odd");
        }
        else
        {
            System.out.println(name + ", the number uou entered, " + num1 + ", is even");
        }

        System.out.print("Please enter a second number: ");
        num2 = reader.nextDouble();
        if(num2%2 != 0)
        {
            System.out.println(name + ", the second number  you entered, " + num2 + ", is odd");
        }
        else
        {
            System.out.println(name + ", the second number you entered, " + num2 + ", is even");
        }

        System.out.println("1. Add");
        System.out.println("2. Subtract");
        System.out.println("3. Multiply");
        System.out.println("4. Divide");
        System.out.print("Please enter the number for the operation you would like to perform on your numbers: ");
        choice = reader.nextInt();

        cont = true;
        while(cont)
        {

            while(choice != 1 && choice != 2 && choice != 3 && choice != 4)
            {
                System.out.print("The number entered is not one of the options. Please choose one of the operations: ");
                choice = reader.nextInt();
            }

            if(choice == 1)
            {
                answer = num1 + num2;
                System.out.println(name +" the sum of " + num1 + " and " + num2 + " is: " + answer);
            }
            else if(choice == 2)
            {
                answer = num1 - num2;
                System.out.println(name +" the difference between " + num1 + " and " + num2 + " is: " + answer);
            }
            else if(choice == 3)
            {
                answer = num1 * num2;
                System.out.println(name +" the product of " + num1 + " and " + num2 + " is: " + answer);
            }
            else //if(choice == 4)
            {
                answer = num1/num2;
                System.out.println(name +" the quotient of " + num1 + " and " + num2 + " is: " + answer);
            }


            System.out.print("Would you like to do anything else (Y/N)? ");
            yorn = reader.nextLine();

            if(yorn.equals("Y"))
            {
                System.out.println("1. Add");
                System.out.println("2. Subtract");
                System.out.println("3. Multiply");
                System.out.println("4. Divide");
                System.out.print("Please enter the number for the operation you would like to perform on your numbers: ");
                choice = reader.nextInt();

            }
            else if (yorn.equals("N"))
            {
                System.out.println("Thank you for using this prgram. Have a good day");
                cont = false;

            }
        }
    }
}

问题是nextDouble()功能。是的,这会读取双精度值,但它也会读取换行符 (\n) 进入缓冲区。所以下次你打电话的时候nextLine(),它会立即解析换行符,而不是等待您的输入。只需致电另一个reader.nextLine()在再次要求输入之前,请清除换行符的缓冲区。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打印两次 的相关文章

  • 在Maven中生成Version.java文件

    我有一个使用 Ant 脚本构建的 Java 项目 我正在尝试将项目转换为 Maven 其中一项任务生成一个名为 Version java 的 Java 源文件 其中包含编译时间戳的静态字符串表示形式 如下所示 package com foo
  • Java将字符串解析为double

    如何解析字符串中的这个 Double 00034800 变成 Double 值 最后两位数字实际上是小数点 所以我正在寻找的结果是348 00 是否有这样的格式可以与十进制格式一起使用 Well String s 00034800 doub
  • “源兼容性”和“目标兼容性”有什么区别?

    之间有什么关系 区别sourceCompatibility and targetCompatibility 当它们设置为不同的值时会发生什么 根据工具链和兼容性 https docs gradle org current userguide
  • 在不支持 CAS 操作的处理器上进行 CompareAndSet

    今天 我在一次采访中被问到下一个问题 如果您在具有不支持 CAS 操作的处理器的机器上调用 AtomicLong 的compareAndSet 方法 会发生什么情况 您能否帮我解决这个问题 并在可能的情况下提供一些全面描述的链接 From
  • 有人用过 ServiceLoader 和 Guice 一起使用吗?

    我一直想通过我们的应用程序 构建系统进行更大规模的尝试 但更高的优先级不断将其推到次要地位 这似乎是加载 Guice 模块的好方法 并且避免了关于 硬编码配置 的常见抱怨 单个配置属性很少会自行更改 但您几乎总是会有一组配置文件 通常用于不
  • 为什么用scala写的代码比用java写的慢6倍?

    我不确定我在编写 scala 代码时是否犯了一些错误 问题是 The four adjacent digits in the 1000 digit number that have the greatest product are 9 9
  • Java中Gson、JsonElement、String比较

    好吧 我想知道这可能非常简单和愚蠢 但在与这种情况作斗争一段时间后 我不知道发生了什么 我正在使用 Gson 来处理一些 JSON 元素 在我的代码中的某个位置 我将 JsonObject 的 JsonElements 之一作为字符串获取
  • 将类转换为 JSONObject

    我有好几堂这样的课 我想将类转换为 JSONObject 格式 import java io Serializable import com google gson annotations SerializedName public cla
  • 为什么 jar 执行的通配符在 docker CMD 中不起作用?

    我有一个Dockerfile与以下CMD启动我的 Spring Boot 应用程序 FROM java 8 jre CMD java jar app file jar 当我尝试从创建的图像启动容器时 我得到 Error Unable to
  • Java AES 256 加密

    我有下面的 java 代码来加密使用 64 个字符密钥的字符串 我的问题是这会是 AES 256 加密吗 String keyString C0BAE23DF8B51807B3E17D21925FADF273A70181E1D81B8EDE
  • 如何更改 Swagger-ui URL 前缀?

    我正在使用 Springfox Swagger2 和 Spring boot 1 5 9 我可以通过此链接访问 swagger UI http localhost 8090 swagger ui html http localhost 80
  • 使用 JDBC 连接到 PostgreSql 的本地实例

    我在 Linux 机器上有一个正在运行的 PostgreSql 本地实例 当我使用psql来自 shell 的命令我成功登录 没有任何问题 我需要通过 JDBC 连接到 PostgreSql 但我不知道我到底应该传递什么url参数为Driv
  • 如何在 IntelliJ IDEA 中运行 akka actor

    来自 Akka 网站文档 然后 这个主要方法将创建所需的基础设施 运行演员 启动给定的主要演员并安排 一旦主要参与者终止 整个应用程序就会关闭 因此 您将能够使用类似于以下的命令运行上面的代码 下列的 java classpath akka
  • UseCompressedOops JVM 标志有什么作用以及何时应该使用它?

    HotSpot JVM 标志是什么 XX UseCompressedOops我应该做什么以及什么时候使用它 在 64 位 Java 实例上使用它 与不使用它 时 我会看到什么样的性能和内存使用差异 去年大多数 HotSpot JVM 都默认
  • Android - 存储对ApplicationContext的引用

    我有一个静态 Preferences 类 其中包含一些应用程序首选项和类似的内容 可以在那里存储对 ApplicationContext 的引用吗 我需要该引用 以便我可以在不继承 Activity 的类中获取缓存文件夹和类似内容 你使用的
  • Tomcat 6 未从 WEB-INF/lib 加载 jar

    我正在尝试找出我的 tomcat 环境中的配置问题 我们的生产服务器正在运行 tomcat 安装并从共享 NFS 挂载读取战争 然而 当我尝试使用独立的盒子 及其配置 进行同样的战争时 我收到下面发布的错误 有趣的是 如果我将 WEB IN
  • java实现excel价格、收益率函数[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Android计算两个日期之间的天数

    我编写了以下代码来查找两个日期之间的天数 startDateValue new Date startDate endDateValue new Date endDate long diff endDateValue getTime star
  • 使用 Apache 允许 Glassfish 和 PHP 在同一服务器中协同工作

    是否可以建立从 Java 到 php 文件的桥梁 我有一个用 Java 编写的应用程序 我需要执行http piwik org http piwik org 这是用 PHP 编写的 在服务器中 我正在运行 PHP 但无法从浏览器访问 php
  • Java 中清除嵌套 Map 的好方法

    public class MyCache AbstractMap

随机推荐

  • 在可排序 UI 中制作表格行向上移动的动画

    我使用 Sortable jQuery UI 来允许用户拖放表行 这允许用户根据自己的偏好对表中的项目进行排名 用户完成对列表的排序后 他们按下保存按钮 该按钮将执行 Ajax 调用 新排名将保存到数据库中 并且表格会简要突出显示 我现在添
  • Rebus 和远程队列

    我正在使用画笔画 https github com rebus org https github com rebus org v 0 83 到目前为止 它都是在一台机器上进行的 现在我需要使用从我的网站到应用程序服务器的远程队列 我不太清楚
  • 适用于 Windows 的 LLVM C++ IDE

    是否有一些适用于 Windows 的 C C IDE 融合的使用 LLVM 编译器 和 Clang C C 分析器 就像现代 Xcode 一样 我有 Dev Cpp 它使用过时的 GCC 并且代码 块 https en wikipedia
  • db2 中批量更新比单次更新快吗?

    我有一个包含 10 列的表 该表中有数千 数百万行 在某些情况下 我想一次更新超过 10K 条记录 目前我的场景代码按顺序工作 for i in primary key ids for all records to be updated e
  • 在 Mercurial 中回滚多个提交(在推送到公开之前)

    我知道回滚可以从本地存储库中的最新变更集中删除提交 但是 是否可以删除自上次推送以来的所有最新提交 而无需重新克隆共享存储库 您可以使用hg strip命令的一部分mq扩大 hg strip REV 这将删除该修订及其所有后代 在尝试此操作
  • 将用户控件属性绑定到自定义类

    在我的应用程序中我使用的是usercontrol称为 ChannelControls 我在主窗口上实例了 6 次 public partial class ChannelControls UserControl CMiXData cmixd
  • 根据 Haskell 列表中 n 的条件删除元素 n-1、n 和 n+1

    假设我有一个包含所有整数的列表2 to 20 2 20 我想使用函数过滤列表f x 或者它是一个谓词 我不太习惯 Haskell 编程中使用的所有术语 如果元素在位置n对于该函数等于 truef 我想删除位置上的元素n 1 n and n
  • char 的 a += b 运算符的实现与 a = a + b 相同吗? [复制]

    这个问题在这里已经有答案了 发现一个有趣的问题 以下代码运行时会产生不同的结果 char c a c a passed c c a Cannot implicitly convert type int to char An explicit
  • Discord.py - 使用命令更改前缀

    我想创建一个命令 管理员可以更改命令的前缀 例如 他们可以将其更改为 而不是使用 并且只有 才能工作 我可以设置只有管 理员才能使用该命令的权限 我环顾四周 通过文档和互联网 但没有找到任何东西 而且我不知道如何做到这一点 您应该使用com
  • 将片段添加到列表视图项中

    我想为列表视图中的每个项目都有一个片段 因为我想分离出一些逻辑 我为每个项目使用一个视图持有者 如果视图不存在 我将创建一个新片段并将其添加到容器中 holder mMyFragment new MyFragment mActivity t
  • SQL Server:如何检查字段是否具有“NULL”或“NOT NULL”约束?

    谁能告诉我是否有一种方法可以以编程方式确定 Micorosft SQL Server 数据库表字段是否具有 NULL 或 NOT NULL 约束 我需要这个 以便我可以部署一个可以安全重新运行的补丁 所以我正在寻找这样的东西 概念 伪代码
  • HiltAndroidApp/HiltViewModel IDE 中的“未解析的参考”,但它仍然可以构建而不会出现错误

    所以我按照以下步骤进行操作https developer android com training dependency injection hilt android https developer android com training
  • 将正斜杠替换为双引号内的双反斜杠

    我拼命地尝试替换正斜杠 用双反斜杠括在双引号 but a echo var sed s sed s g 不起作用 我不知道为什么 它总是只替换一个反斜杠而不是两个 When 是您想要替换为的正则表达式的一部分s 替代 命令sed 您可以在命
  • Java Regex - 使用单个美元捕获字符串,但当它有两个连续的美元时则不会

    我已经发布this https stackoverflow com questions 58821727 java regex java util regex search for dollar sign早点问 但这还没有结束 那里适用的所
  • 如何解决500内部服务器错误? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 当我使用 ajax 调用时 我收到 500 内部服务器错误 是什么导致了这个问题 如何解决呢 调试 修复和解决来自 Ajax 调用的服
  • 结构一字节对齐与架构的对齐要求冲突?

    我之前发过一个问题here https stackoverflow com questions 13881487 should i worry about the alignment during pointer casting comme
  • Android - 使用我的应用程序打开 Gmail 附件

    我需要使用我的应用程序打开具有自定义扩展名的文件 当文件位于我的 SD 卡中时 我可以使用 Intent 过滤器来执行此操作 如果文件作为 Gmail 附件发送 我还可以查看 下载 和 预览 按钮 但是 当我单击下载 预览按钮时 我收到消息
  • 删除某些内容后如何在 OS X Yosemite 上恢复 python?

    我想我之前是通过homebrew安装了python 这不是一个好主意 但我做到了 which python Library Frameworks Python framework Versions 2 7 bin python sudo r
  • 如何在标准 ML 中检查整数的以 2 为底的表示形式? [复制]

    这个问题在这里已经有答案了 我正在尝试在 SML 中实现重复平方算法 我希望它是尾递归的 目标是将所有 x k 相乘 其中 k 是 2 m 2 m 是 n 的二进制表示形式中的 1 例如 对于 x 25 计算 x 1 x 8 x 16 因为
  • 打印两次

    我出于教学目的编写了一个简单的程序 除了打印出名称和您选择的计算答案的部分之外 一切正常 if 语句似乎执行了两次 就好像它在前进之前向后退了一步 它将打印出 您想继续吗 但不会提示用户输入是 否 而是会再次打印出计算的答案 然后询问他们是