2014-10-22 134 views
0

我的问题是如何将char转换为布尔值。比如我有2类如何将char转换为布尔值?

一个是只有bleedinghistory方法和病人的信息类:

Public class Patient { 

     private static String name; 
     private static boolean bleedingHistory = true; 
     private String answer; 
     private double ureaLevel; 
     private double proLevel; 


     public Patient() 
     { 
      String name = "unknown"; 
      double ureaLevel = 0.0; 
      double proLevel = 0.0; 
      boolean bleedingHistory = false; 

     } 

     public Patient (String inName, boolean inBleedingHistory) 
     { 
      if (name != "" || bleedingHistory == true) 
      { 
       name = inName; 
       bleedingHistory = inBleedingHistory; 

      } 

      else 
      { 
       name = "unknown"; 
       bleedingHistory = false;  
      } 

      proLevel = 0.0; 
      ureaLevel = 0.0; 
     } 
    public boolean getBleedingHistory() 
      { 
       return bleedingHistory; 

      } 

      public void setBleedingHistory(boolean inBleedingHistory) 
      { 

       bleedingHistory = inBleedingHistory; 
      } 

和另一级呼叫patientcheck是要求用户输入患者是否有出血史的一部分:

System.out.print("Does the patient has a history of bleeding(Yes or No)?: "); 
     char inBleedingHistory; 
     do 
     { 
      inBleedingHistory = sc.next().charAt(0); 
      if (inBleedingHistory != 'n' && inBleedingHistory != 'N' && inBleedingHistory != 'y' && inBleedingHistory != 'Y') 
      {System.out.println("Invalid answer, please enter YES or NO: "); 

      sc.nextLine(); 
      } 

     }while (inBleedingHistory != 'n' && inBleedingHistory != 'N' && inBleedingHistory != 'y' && inBleedingHistory != 'Y'); 

     pat1 = new Patient (inName, inBleedingHistory); 

我知道我的病历检查部分的历史出血是错误的,但我能做些什么来纠正它?感谢

+0

'布尔charIsY =(CH == 'Y' || CH == 'Y');' – khelwood 2014-10-22 09:14:19

回答

0
pat1 = new Patient (inName, Character.toString(inBleedingHistory).equalsIgnoreCase("y")); 

如果inBleedingHistory匹配Ÿ这将返回true或Y.它还将比较之前转换字符为String。

你也可以将它转换为使用

pat1 = new Patient (inName, String.valueOf(inBleedingHistory).equalsIgnoreCase("y")); 

这是同一个字符串。

您还可以比较可能是最快方式的字符。

Character yesLower, yesUpper; 

yesLower = new Character('y'); 
yesUpper = new Character('Y'); 

pat1 = new Patient (inName, (inBleedingHistory.compareTo(yesLower) == 0 || inBleedingHistory.compareTo(yesUpper) == 0)); 
+0

也可以使用'equalsIgnoreCase'计数y的/ Y的差异。 – Holloway 2014-10-22 09:14:49

+2

你必须在'char'上使用'==',而不是'equals' – khelwood 2014-10-22 09:14:53

+0

修复它。强制转换为字符串或使用字符串。 – 2014-10-22 09:17:05

1
pat1 = new Patient(inName, (inBleedingHistory=='y' || inBleedingHistory=='Y')); 
+0

哦,所以我可以做到这一点?我从来没有想过这个 – 2014-10-22 12:22:51

+0

是的,你可以。请接受答案,如果它做到了你想要的。 – khelwood 2014-10-22 12:46:17