2016-04-22 167 views
0

我试图使用在“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; 

在此先感谢!

回答

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语句。

+0

另外请注意,这个特殊的使用情况下,他可以做到这一切基于数学。 –

+0

谢谢!这真的起作用了! – AldoT

1

我建议你定义tot1所有的if语句之外如下:

String tot1; 
if (sum == 10) 
    ... 
    ... 
print tot1; 

现在,你可能会得到tot1可能尚未初始化一个警告 - 你将不得不照顾它(无论是默认值分配给它,或者检查是否tot1为null,并且解决它)

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

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; 

}