使用If语句与公式JAVA

时间:2016-10-07 20:13:50

标签: 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语句都与数字有关。有人能指出我正确的方向吗?

类似: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;
  }
}
}

3 个答案:

答案 0 :(得分:1)

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

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 truefalse。您可以直接在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"在我的数字的末尾表示它们是浮点数 - 如果你使用整数执行所有数学,你将失去精度。