如何使用if语句中的值?
问题描述:
我试图使用在“if语句”内创建的值并将其打印在其外部,但创建弹出式窗口却无法识别它,我不知道为什么。有人能帮助我吗??如何使用if语句中的值?
@Override
public void onClick (View v){
int sum = uno + dos + tres + cuatro;
double pru = sum*8;
if(sum == 11){
double tot = pru - (pru*.01);
String tot1 = String.valueOf(tot);
}
if(sum == 12){
double tot = pru - (pru*.02);
String tot1 = String.valueOf(tot);
}
if(sum == 13){
double tot = pru - (pru*.03);
String tot1 = String.valueOf(tot);
}
if(sum == 14){
double tot = pru - (pru*.04);
String tot1 = String.valueOf(tot);
}
if(sum == 15){
double tot = pru - (pru*.05);
String tot1 = String.valueOf(tot);
}
if(sum == 16){
double tot = pru - (pru*.06);
String tot1 = String.valueOf(tot);
}
if(sum == 17){
double tot = pru - (pru*.07);
String tot1 = String.valueOf(tot);
}
if(sum == 18){
double tot = pru - (pru*.08);
String tot1 = String.valueOf(tot);
}
if(sum == 19){
double tot = pru - (pru*.09);
String tot1 = String.valueOf(tot);
}
if(sum >= 20){
double tot;
tot = pru - (pru*.1);
String tot1 = String.valueOf(tot);
}
print tot1;
在此先感谢!
答
我建议你阅读本:https://en.wikipedia.org/wiki/Scope_%28computer_science%29
简短的回答是,你不能做你想要做的事。当您退出if块时,出现在if块中的变量将消失。这被称为变量“超出范围”。
要解决您的问题,请在if块之外声明变量。我不会重现你的整个代码,但它看起来像这样:
int sum = uno + dos + tres + cuatro;
double pru = sum*8;
String tot1 = "";
if(sum == 11){
double tot = pru - (pru*.01);
tot1 = String.valueOf(tot);
}
print tot1;
只要做到这一点你所有的if语句。
答
我建议你定义tot1所有的if语句之外如下:
String tot1;
if (sum == 10)
...
...
print tot1;
现在,你可能会得到tot1可能尚未初始化一个警告 - 你将不得不照顾它(无论是默认值分配给它,或者检查是否tot1为null,并且解决它)
答
整个代码可以降低到几行通过识别pru
变量的mulitplier有这个关系到sum
:
multiplier = (sum - 10)/100, for 11 <= sum <= 20
然后,你真正需要的是一个if
声明来处理事情。
@Override
public void onClick (View v){
int sum = uno + dos + tres + cuatro;
double pru = sum*8;
String tot1 = "";
if (sum >= 11 && sum <= 20) {
double multiplier = (sum - 10)/100.0;
double tot = pru - (pru * multiplier);
tot1 = String.valueOf(tot);
}
System.out.println(tot1);
}
如果你没有真的需要所有这些if
语句,一个更好的方式来处理这将是使用switch
声明。你可以阅读关于here。
答
给你一个提示:如果你一遍又一遍地重复相同的代码,你做错了什么。编程时,你应该总是有这个句子。
注意:在这个例子中,你应该使用SINGLE if语句。但作为一个例子来向你展示,在未来,有一种叫做循环的东西!
你的代码可以是这样的具有循环:
@Override
public void onClick (View v){
int sum = uno + dos + tres + cuatro;
double pru = sum*8;
double tot;
String tot1;
if(sum >= 20)
{
double tot;
tot = pru - (pru*.1);
String tot1 = String.valueOf(tot);
}
else
{
for (double x = 11, i = .01; x < 20; x++, i+=0.1)
{
if (sum == x)
{
tot = pru - (pru*i);
tot1 = String.valueOf(tot);
}
}
}
print tot1;
}
另外请注意,这个特殊的使用情况下,他可以做到这一切基于数学。 –
谢谢!这真的起作用了! – AldoT