Math.sqrt函数

Zhi*_*anc 1 java joptionpane

    import javax.swing.JOptionPane;

public class PredefinedClass {
    public static void main(String[] args){
        do{
            String input = JOptionPane.showInputDialog("Enter a character:");
            if(input.length() > 1){
                JOptionPane.showMessageDialog(null,"Invalid Input. Input a character only.");
            }else if(Character.isLetter(input.charAt(0))){
                if(Character.isUpperCase(input.charAt(0))){
                    JOptionPane.showMessageDialog(null,"The character is an Uppercase letter.");
                }else if(Character.isLowerCase(input.charAt(0))){
                    JOptionPane.showMessageDialog(null,"The character is a Lowercase letter.");
                }
            }else if(Character.isDigit(input.charAt(0))){
                JOptionPane.showMessageDialog(null,"The character is a digit."+
                                                   "\nThe square root of "+input+" is "+Math.sqrt(input.charAt(0)));

            }
        }while(JOptionPane.showConfirmDialog(null,"Try again?[Y/N]","Try again?[Y/N]",JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION);
    }
}
Run Code Online (Sandbox Code Playgroud)

Math.sqrt(input.charAt(0))当我尝试9它输出7.54应该是3.为什么?

NPE*_*NPE 5

input.charAt()返回字符,而不是数字的数值.这意味着你得到了'9',而不是9.该ASCII值'9'57,所以你最终采取的是平方根.

试试吧Math.sqrt(input.charAt(0) - '0').

如果您想使代码更通用一些,请考虑使用Integer.valueOf()Double.valueOf()不使用查看单个字符.