在整个if语句中存储一个double

时间:2012-10-20 19:33:32

标签: java loops

我是一名初学程序员,并且已经玩了几天了...我似乎无法通过一系列if语句找到存储双重运行的方法然后在{ {1}}。

我已经尝试过使用数组,交换机等。我需要运行这个BaseRate,这取决于我需要修改BaseRate的用户输入,并让它存储以前的修改。

我最接近的是通过几个if语句存储BaseRate,但最终结果仍然以原始数字(4000.00)结束。我真的不太熟悉这门语言,当你不太了解语言及其可能性时,这是一个艰难的编程。提前感谢您的帮助。

System.out.println("...")

问题是最终//引用BaseRate未经修改并保持在4000.0 我真的不想为每种可能性添加一个新的变量名称(因为不仅仅是“m或f”以及“体验驾驶”。我需要一种方法,如果语句依赖于变量关于用户输入以保持这个数字(不是像这个人想要的那样返回)。这个东西应该是这么简单......我真的很沮丧!

4 个答案:

答案 0 :(得分:3)

  

我最接近的是通过几个if语句存储BaseRate

问题是,在那些if语句中,您将BaseRate重新声明为本地变量:

if (UserSex == 'f')
{
    System.out.println("Discount 5%");
    double BaseRate = BaseRate2 * 0.95;
    System.out.println(BaseRate);
}

这根本不会改变 static 变量的值......当变量超出块末尾的范围时,局部变量的值实际上是无用的。

只需更改此类代码即可为现有变量指定新值:

if (UserSex == 'f')
{
    System.out.println("Discount 5%");
    BaseRate = BaseRate2 * 0.95;
    System.out.println(BaseRate);
}

或者,完全删除静态变量,并在所有if块之前在方法中声明局部变量 - 这里不清楚为什么你想要静态变量。

此外,我建议您使用更传统的支撑方式,并使用camelCase作为变量名称。

答案 1 :(得分:2)

您需要删除BaseRate的本地声明以在类级别设置变量:

double BaseRate = BaseRate2 * 0.95;

更改为:

BaseRate = BaseRate2 * 0.95;

同样在这里:

BaseRate = BaseRate2 - ((UserExperience * 0.05) * BaseRate2);

答案 2 :(得分:2)

您正在不同范围内的多个位置定义变量BaseRate。例如:

double baserate = 4000.00D;

{ // inner scope
     double baserate = 1.0D
     System.out.println(baserate);
}

System.out.println(baserate);

将打印1.0,然后打印4000.0,因为在块{}内你暂时重新定义了baseratebaserate的这种“本地”声明完全独立于外部声明。当你退出内部范围时,内部声明被“遗忘”,你只能再看到外部声明。

以这种方式“隐藏”现有变量会变得非常混乱,最好避免使用。

答案 3 :(得分:1)

您每次都在创建一个新变量。只需使用

BaseRate = blah blah

而不是

double BaseRate = blah blah