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

定义变量和使用开关

水铭晨
2023-03-14

我的Java课程有一个问题要解决,但由于我对这种语言是新手,我似乎找不到解决方案。如果有人能帮我,我会很高兴的。

问题是,H应该定义为双精度,因为它可能包含像2.5这样的十进制值。

当前代码工作正常,但仅适用于H的整数。我尝试了<code>双H=2.5 但然后一切都搞砸了。此外,我还了解了从int到double以及从int到double的转换,尝试了一些代码,但如果我使用switch,它会断开<code>P1*H。

public class PoolTask {

    public static void main(String[] args) {

        int V = 200;
        int P1 = 150;
        int P2 = 170;
        int H = 2;

        int P1w = P1 * H;
        int P2w = P2 * H;
        int Pt = P1w + P2w;

        if (Pt <= V) {

            int percentage1 = (Pt * 100 / V);
            int percentage2 = (P1w * 100 / Pt);
            int percentage3 = (P2w * 100 / Pt);

            System.out.println("The pool is " + percentage1 + "% full. Pipe 1: " + percentage2 + "%. Pipe 2: " + percentage3 + "%.");             
        } else if (Pt > V) {

            int liters = (Pt - V);

            System.out.println("For " + H + " hours the pool overflows with " + liters + " liters");
        } else {
            System.out.println("");
        }
    }
}

共有2个答案

澹台承载
2023-03-14

您可以将所有变量转换为双精度,如下所示:

class PoolTask {
    public static void main(String[] args) {
        double V = 200;
        double P1 = 150;
        double P2 = 170;
        double H = 2.0;

        double P1w = P1 * H;
        double P2w = P2 * H;
        double Pt = P1w + P2w;

        if(Pt <= V) {
            double percentage1 = (Pt * 100 / V);
            double percentage2 = (P1w * 100 / Pt);
            double percentage3 = (P2w * 100 / Pt);
            System.out.println("The pool is " + percentage1 + "% full. Pipe 1: " + percentage2 + "%. Pipe 2: " + percentage3 + "%.");             
        } else if (Pt > V) {
            double liters = (Pt - V);
            System.out.println("For " + H + " hours the pool overflows with " + liters + " liters");
        } else {
            System.out.println("");
        }
    }
}

但是,如果您不想显示具有十进制值的变量,例如%1,则可以在 print 语句中将其转换为 int

System.out.println("The pool is " + (int)percentage1 + ...)
况明贤
2023-03-14

这都是因为您只为H指定了< code>double数据类型。在使用其他值进行计算后,当您将结果保存到< code>int类型的变量中时,结果会丢失其小数部分,因为您无法为< code>int类型的变量保存它

声明所有类型为<code>double<code>的变量,以摆脱当前的混乱局面

 类似资料:
  • 主要内容:Python 变量的赋值,Python 变量的使用,Python 是弱类型的语言任何编程语言都需要处理数据,比如数字、字符串、字符等,我们可以直接使用数据,也可以将数据保存到变量中,方便以后使用。 变量(Variable)可以看成一个小箱子,专门用来“盛装”程序中的数据。每个变量都拥有独一无二的名字,通过变量的名字就能找到变量中的数据。 从底层看,程序中的数据最终都要放到内存(内存条)中,变量其实就是这块内存的名字。 和变量相对应的是 常量(Constant),它们都是用来“

  • 问题内容: 假设我在网站的各个页面上使用了三种单独的配色方案。每种颜色都有浅,中和深三种色调,并且配色方案由体内的类别定义。假定默认为“红色”配色方案。像这样: 颜色定义 : 基本默认样式示例 不同的配色方案样式示例 我想使用变量,这样我就不必为每种方案重新编写所有的颜色变化,这样我就可以编写如下内容: …但是我不太了解如何完成这项工作。帮帮我…? 问题答案: 在选择器和参数混合中使用插值和转义,

  • 主要内容:定义指针变量,通过指针变量取得数据,关于 * 和 & 的谜题,对星号*的总结数据在内存中的地址也称为 指针,如果一个变量存储了一份数据的指针,我们就称它为 指针变量。 在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。指针变量的值就是某份数据的地址,这样的一份数据可以是数组、字符串、函数,也可以是另外的一个普通变量或指针变量。 现在假设有一个 char 类型的变量 c,它存储了字符 'K'(ASCII码为十进制数 75),并占用了地址为 0X11A 的内存(地址

  • 问题内容: 当我尝试使用var定义变量时,一切正常。 但是将其定义为const不能按预期工作,并且该变量未定义。 我已经在Chrome和Node.js上对其进行了测试。我想念什么吗? 先感谢您! 问题答案: 在 eval 代码中使用 let 和 const 不会调用严格模式。 let 和 const 是 lexicalDeclarations ,将它们的范围限制为封闭的词法范围。 __ __ 词法

  • 找到价格最高和最低的信息: mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop; mysql> SELECT * FROM shop WHERE [email protected]_price OR [email protected]_price; +---------+--------+-------+ |

  • 问题内容: 在以下片段中 内部是一个新变量, 外部 将保持为空。 通过显式定义短变量定义并将其替换为赋值,似乎可以正确地初始化外部变量 有没有一种更简单的方法来指定内部变量,而不是实际上是作用域变量,而是全局变量?我在想类似的东西,但这在包本身内部无效。 问题答案: 不,就是这样。只是 New()( https://golang.org/doc/effective_go.html#allocati