2016-09-21 133 views
0

我使用Java编码并使用TextPad编辑器。此if语句的问题

我想写的代码,设置“r”等于某个值取决于用户是男性还是女性。如果他们是男性,我已经要求用户输入“1”,如果他们是女性,则输入“2”。

我将r设置为double。 D和体重已由用户在代码中早些时候定义。

这是我试图使用的代码,它不断给我一个错误,说我还没有定义“r”。

if (gender == 1) 
    r = 0.73D; 
if (gender == 2) 
    r = 0.66D; 
else 
    System.out.println("Please enter 1 or 2 for male or female."); 

alcoholAbsored = (3.701*D)/(weight*r); 

所有的代码编译,直到我得到的公式alcoholAbsorbed,然后告诉我,R是没有定义。从技术上讲,当我编译时,if/else语句没有问题,但是当我尝试使用r时就会出现问题。我已经结束了现在使用此代码,但这不是我真正想要的,因为如果用户放置除1或2之外的其他东西,该怎么办?

if (gender == 1) 
    r = 0.73D; 
else 
    r = 0.66D; 

alcohol absorbed = (3.701*D)/(weight*r); 

有人可以告诉我我做错了什么,我可能会去修复它吗?谢谢,麻烦您了!

+1

Java的== JavaScript的 –

+0

申报R上的IFS上述声明。 .. var r; – deviantxdes

+0

全局声明r。并用一些值初始化它 –

回答

1

您的代码的问题在于,在第一个版本中,如果它转到else块(即使用户输入1),那么r将不会被初始化,因此在下一行它找不到它的任何价值。正确的代码会是这样的:

if (gender == 1) 
    r = 0.73D; 
else if (gender == 2) 
    r = 0.66D; 
else { 
    r = -1D; 
    System.out.println("Please enter 1 or 2 for male or female."); 
} 
if (r != -1D) 
    alcoholAbsored = (3.701*D)/(weight*r); 

或者:

if (gender == 1 || gender == 2){ 
    if (gender == 1) 
     r = 0.73D; 
    else 
     r = 0.66D; 
    alcoholAbsored = (3.701*D)/(weight*r); 
} 
else 
    System.out.println("Please enter 1 or 2 for male or female."); 
+0

我是否需要将alcoholAbsorbed公式放入if语句中? –

+0

不,但您只需确保已在所有可能达到'alcoholAbsorbed'的分支中初始化'r'。 – afsafzal

1

其更好像这样的代码

if(gender==1 || gender==2) 
{ 
    if (gender == 1) 
    r = 0.73D; 
    else if (gender == 2) 
    r = 0.66D; 

    alcoholAbsored = (3.701*D)/(weight*r); 
    // do something 
} 
else 
{ 
    System.out.println("Please enter 1 or 2 for male or female."); 
} 
+2

*“更好的代码是这样的”*不是如果你的代码格式不正确... – TNT

+0

嘿TNT。我从我的手机发布它。如果代码是可以理解的。我认为不需要改变花括号和范围说明。 –