我正在为我的JAVA工作。有一部分我很难理解:根据性别应用以下公式(必须使用if语句): Hmale_child =((Hmother * 13/12)+ Hfather)/ 2 或 Hfemale_child =((Hfather * 12/13)+ Hmother)/ 2
如何在这些公式中使用if语句?如果用户输入他们孩子的性别是男性,我会使用Hmale_child。但我所见过的所有if语句都与数字有关。有人能指出我正确的方向吗?
类似:if(gender == male)??
import java.util.Scanner;
public class WKSP6Trial
{
public static void main(String[] args)
{
Scanner scannerObject = new Scanner(System.in);
Scanner inp = new Scanner(System.in);
String Letter;
String input = "";
String exit = "exit";
boolean isStringLetter = true;
System.out.println("Welcome! If at any time you wish to exit the program, type the word exit, and press enter.");
while(true)
{
System.out.println("\nPlease enter letters m or f only as you enter your child's gender: ");
input = inp.nextLine();
if(input.equalsIgnoreCase(exit)){break;}
isStringLetter = input.matches("[m/f/M/F]+");
if(isStringLetter == false)
{
System.out.println("\nYou entered a non letter " + input);
System.out.println("Remove all non letters aside from m or f from your input and try again !");
break;
}
System.out.println("You entered the gender of your child.");
System.out.println("Next enter the height of the child's father in feet followed by ");
System.out.println("the father's height in inches: ");
int n1, n2;
n1 = scannerObject.nextInt();
n2 = scannerObject.nextInt();
System.out.println("You entered " + n1 + " followed by " + n2);
System.out.println("Finally, enter the height of the child's mother followed by ");
System.out.println("the mother's height in inches: ");
int d1, d2;
d1 = scannerObject.nextInt();
d2 = scannerObject.nextInt();
System.out.println("You entered " + d1 + " followed by " + d2);
Scanner in = new Scanner(System.in);
System.out.print("Convert from: ");
String fromUnit = in.nextLine();
System.out.print("Convert to: ");
String toUnit = in.nextLine();
//below is what I'm uncertain of
if(gender == m)
Hmale_child = ((Hmother * 13/12) + Hfather)/2;
}
}
}
答案 0 :(得分:1)
您可以使用equals
或equalsIgnoreCase
方法检查字符串输入:
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"
:
if (gender.equalsIgnoreCase("m")) {
child = ((Hmother * 13.0/12) + Hfather)/2.0;
}
if (gender.equalsIgnoreCase("f")) {
child = ((Hfather * 12.0/13) + Hmother)/2.0;
}
答案 1 :(得分:0)
在Java中,String是一个对象。因此,检查或比较输入字符串的适当方法是使用equals()
方法而不是==
。
例如:
String s = "m";
要检查String s
是否等于m
,您可以使用s.equals("m")
。
对于int, double
和其他原始数据类型(布尔值除外),您可以使用==
。
由于布尔只包含两个值i,e true
或false
。您可以直接在if条件中使用它们。
例如
boolean b = true;
if (b){
// true
}else{
//false
}
答案 2 :(得分:0)
您也可以在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"在我的数字的末尾表示它们是浮点数 - 如果你使用整数执行所有数学,你将失去精度。