分享
三行代码  ›  专栏  ›  技术社区  ›  Jesse Therrien

爪哇-!字符串.equals(“abc”)应为FALSE时返回TRUE

  •  0
  • Jesse Therrien  · 技术社区  · 1 周前

    我正在为学校解决这个问题(请忽略你可能看到的任何其他错误,我仍在努力解决)。我被我的while循环卡住了。

    我正在添加一个检查,如果用户没有输入 c f 再问他们直到他们输入这两个字母中的一个。

    但是,当我调试它时,我发现函数忽略了 ! 在我的陈述和回复中 TRUE units c .

    import textio.TextIO;
    
    public class TempConvert {
        
        // converts from fahrenheit to celsius
        static int convToCelsius(int tempF) {
            int tempC = (tempF - 32) * 5 / 9;
            return tempC;
        }
    
        // converts from celsius to fahrenheit
        static int convToFahrenheit(int tempC){
            int tempF = (tempC * 9 / 5) + 32;
            return tempF;
        }
    
        public static void main(String[] args){
    
            int temp;       // user specified temp
            int convTemp;   // var for converted temp
            String units;   // user specified unit
    
            System.out.println("This program converts Temperatures from Fahrenheit to Celsius and vice versa.");
            System.out.print("Please enter your temperature: ");
            temp = TextIO.getlnInt();
            System.out.print("Please enter the units (F/C):");
            units = TextIO.getlnWord().toLowerCase();
    
            while (!units.equals("c") || !units.equals("f")){
                System.out.print("Please enter F for Fahrenheit or C for Celsius: ");
                units = TextIO.getlnWord();
            }
    
            if (units.equals("c")){
                convTemp = convToFahrenheit(temp);
                System.out.printf("A temperature of %d degrees Fahrenheit is equivalent to %d degrees Celsius", temp, convTemp);
            }
    
            else if (units.equals("f")){
                convTemp = convToCelsius(temp);
                System.out.printf("A temperature of %d degrees Celsius is equivalent to %d degrees Fahrenheit", temp, convTemp);
            }
    
        } // end main
    
    } // end class
    
    1 回复  |  直到 1 周前
        1
  •  3
  •   rzwitserloot    1 周前

    !units.equals("c") || !units.equals("f")

    总是 units 持有。

    假设它成立 "c"

    让我们填写:

    !units.equals("c") || !units.equals("f")
    !true || !false
    false || true
    true
    

    我敢肯定你是说 !units.equals("c") && !units.equals("f") 相反,或者也许 !(units.equals("c") || units.equals("f"))