将If语句与JAVA公式结合使用
我正在为我的JAVA工作。有一部分我很难理解:基于性别应用以下公式(必须使用if语句): Hmale_child=((Hmother*13/12)+Hfather)/2或 Hfemale_child=((Hfather*12/13)+Hmother)/2 如何在这些公式中使用if语句?如果用户输入他们孩子的性别是男性,我就使用Hmale_child。但我看到的所有if语句都与数字有关。谁能给我指出正确的方向吗 比如:如果(性别==男性)将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
您可以使用
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);
}