【问题标题】:how to change a char to a boolean?如何将字符更改为布尔值?
【发布时间】:2014-12-17 16:46:22
【问题描述】:

我的问题是如何将字符更改为布尔值。例如我有 2 节课

一个是只有出血历史方法和信息的患者类:

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);

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

【问题讨论】:

  • boolean charIsY = (ch=='y' || ch=='Y');

标签: java char boolean setter getter


【解决方案1】:
pat1 = new Patient(inName, (inBleedingHistory=='y' || inBleedingHistory=='Y'));

【讨论】:

  • 哦,我可以这样做吗?我从来没有想过这个
  • 是的,你可以。如果它符合您的要求,请接受答案。
【解决方案2】:
pat1 = new Patient (inName, Character.toString(inBleedingHistory).equalsIgnoreCase("y"));

如果 inBleedingHistory 匹配 y 或 Y,这将返回 true。它还会在比较之前将 Char 转换为 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));

【讨论】:

  • 也可以使用 equalsIgnoreCase 计算 y/Y 差异。
  • 你必须在char上使用==,而不是equals
  • 修复了它。转换为字符串或改用字符串。
  • @EmanuelSeibold,我认为问题在于inBleedingHistory 是一个字符,所以没有equalsIgnoreCase 方法
  • 哎呀,现在我明白了。 :-) 抱歉,没看到。今天没喝咖啡;)
猜你喜欢
  • 2015-07-11
  • 1970-01-01
  • 2020-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
相关资源
最近更新 更多