我正在尝试使用在“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;
提前致谢!
答案 0 :(得分:5)
我建议你阅读: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语句执行此操作。
答案 1 :(得分:2)
您可以通过识别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。
答案 2 :(得分:1)
我建议你在所有if语句之外定义tot1,如下所示:
String tot1;
if (sum == 10)
...
...
print tot1;
现在你可能会收到一条警告,说明tot1可能尚未初始化 - 你必须要处理它(要么为它指定一个默认值,要么检查tot1是否为null并处理它)
答案 3 :(得分:1)
给你的提示:如果你一遍又一遍地重复相同的代码,那你就做错了。在编程时,你应该始终掌握这句话。
注意:在此示例中,您应使用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;
}