将If语句与JAVA公式结合使用

将If语句与JAVA公式结合使用,java,string,if-statement,formulas,Java,String,If Statement,Formulas,我正在为我的JAVA工作。有一部分我很难理解:基于性别应用以下公式(必须使用if语句): Hmale_child=((Hmother*13/12)+Hfather)/2或 Hfemale_child=((Hfather*12/13)+Hmother)/2 如何在这些公式中使用if语句?如果用户输入他们孩子的性别是男性,我就使用Hmale_child。但我看到的所有if语句都与数字有关。谁能给我指出正确的方向吗 比如:如果(性别==男性) 您可以使用equals或方法检查字符串输入: if (g

我正在为我的JAVA工作。有一部分我很难理解:基于性别应用以下公式(必须使用if语句): Hmale_child=((Hmother*13/12)+Hfather)/2Hfemale_child=((Hfather*12/13)+Hmother)/2

如何在这些公式中使用if语句?如果用户输入他们孩子的性别是男性,我就使用Hmale_child。但我看到的所有if语句都与数字有关。谁能给我指出正确的方向吗

比如:如果(性别==男性)



您可以使用
equals
或方法检查字符串输入:

if (gender.equalsIgnoreCase("m")) {
    child = ((Hmother * 13.0/12) + Hfather)/2.0;
else { // alternatively - check if the gender is female, just to be sure
     child = ((Hfather * 12.0/13) + Hmother)/2.0;
}
编辑:
如果绝对不能使用
else
块,那么相同的逻辑可以表示为两个
If
语句,因为性别不能同时是
“m”
“f”


在Java中,字符串是一个对象。因此,检查或比较输入字符串的适当方法是使用
equals()
方法,而不是
=

例如:
String s=“m”
要检查字符串s是否等于
m
,可以使用
s.equals(“m”)

对于
int、double
和其他基本数据类型(布尔值除外),可以使用
=

因为布尔值只包含两个值,即
true
false
。您可以直接在if条件下使用它们

比如说

boolean b = true;
if (b){
 // true
}else{
//false
}

您也可以比较if语句中的字符串

请记住,字符串是对象,因此==不会像您预期的那样工作。 比较对象时,==检查两个对象引用是否指向同一个对象,因此使用==将不认为具有相同数据的两个不同对象是相同的。 如果要比较对象的内容,应该使用equals()方法

大多数标准Java对象都应该通过equals()方法支持合理的相等定义。对于字符串,将以区分大小写的方式比较字符串的内容(如果不希望比较区分大小写,请使用equalsIgnoreCase()

如果创建自己的类,则需要自己实现equals()的合理定义

(由于Java的字符串表,字符串的情况下==和.equals()规则稍微复杂一些,因此==通常在这种情况下有效,但您仍然不应该依赖它。)

因此,要根据输入的性别运行不同的计算,您可以执行以下操作:

float height;
if ( gender.equalsIgnoreCase("m") ) {
    height = (heightMother * 13f / 12f) + (heightFather / 2f);
else {
    height = (heightFather * 12f / 13f) + (heightMother / 2f);
}
注意我的变量名-Java约定是以camelCase开头的变量名-变量名不应以大写字母开头


此外,我在数字的末尾使用了“f”来表示它们是浮点数-如果使用整数执行所有数学运算,将失去精度。

要比较字符串,通常不使用
=
。相反,您可能希望编写
if(gender.equals(“M”)
if(gender.equalsIgnoreCase(“M”)
或类似的代码。有关原因的更多信息,请查看以下问题的答案:当我执行此操作时,会立即出现错误“找不到符号”。这意味着我必须声明并初始化变量,对吗?所以我将gender.equals、Hmother和Hfather设置为字符串?哦,对不起,您称之为
input
,而不是
gender
。所以,
if(input.equals(“M”))
。这似乎有效,我只需要声明Hmother和Hfather。我会将它们声明为字符串吗?不,对字符串进行乘法和除法是没有意义的。将它们声明为与您试图用它们建模的数据类型最匹配的数据类型。好吧,我不能使用“else”。他特别要求提供一份“如果声明”。感谢您的快速回复,though@J.Nav每当您使用
if
语句时,最好添加
else
,就像/else以一种清晰明了的方式定义了您的程序一样,尽管您可以只使用if而不使用else。如果我可以使用一个简单的if-else语句,但是我必须使用if语句,它看起来像。@J.Nav请参阅我的编辑,以获得一个没有
else
块的解决方案。谢谢!这是一个有意义的好主意。
boolean b = true;
if (b){
 // true
}else{
//false
}
float height;
if ( gender.equalsIgnoreCase("m") ) {
    height = (heightMother * 13f / 12f) + (heightFather / 2f);
else {
    height = (heightFather * 12f / 13f) + (heightMother / 2f);
}