我是一名初学程序员,并且已经玩了几天了...我似乎无法通过一系列if语句找到存储双重运行的方法然后在{ {1}}。
我已经尝试过使用数组,交换机等。我需要运行这个BaseRate,这取决于我需要修改BaseRate的用户输入,并让它存储以前的修改。
我最接近的是通过几个if语句存储BaseRate,但最终结果仍然以原始数字(4000.00)结束。我真的不太熟悉这门语言,当你不太了解语言及其可能性时,这是一个艰难的编程。提前感谢您的帮助。
System.out.println("...")
问题是最终//引用BaseRate未经修改并保持在4000.0 我真的不想为每种可能性添加一个新的变量名称(因为不仅仅是“m或f”以及“体验驾驶”。我需要一种方法,如果语句依赖于变量关于用户输入以保持这个数字(不是像这个人想要的那样返回)。这个东西应该是这么简单......我真的很沮丧!
答案 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,因为在块{}
内你暂时重新定义了baserate
。 baserate
的这种“本地”声明完全独立于外部声明。当你退出内部范围时,内部声明被“遗忘”,你只能再看到外部声明。
以这种方式“隐藏”现有变量会变得非常混乱,最好避免使用。
答案 3 :(得分:1)
您每次都在创建一个新变量。只需使用
BaseRate = blah blah
而不是
double BaseRate = blah blah