java - Math.sqrt 函数

标签 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);
    }
}

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

最佳答案

input.charAt() 返回字符,而不是数字的数值。这意味着您得到的是 '9',而不是 9ASCII value '9' 的个数是 57,因此您最终要对其求平方根。

改为尝试 Math.sqrt(input.charAt(0) - '0')

如果你想让你的代码更通用一点,考虑使用Integer.valueOf()Double.valueOf()而不是查看单个字符。

关于java - Math.sqrt 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7714707/

相关文章:

java - 我如何放置 JOptionPane 。将InputDialog显示到屏幕上的第一个位置?

java - 在 Java 中拆分包含 (

java - 如何在java中对非字符串对象使用Hashset

java - Kafka消费者(0.8.2.2)可以批量读取消息吗

java - 输入文本文件上的正则表达式 float

java - JTable:WAITING根据用户输入选择行

java - JOptionPane中的猜数字游戏,JPanel不显示(Java)

java - 如何将字段名称传递给属性文件中的全局消息

java - 具有方法匹配的 Java 中的正则表达式

java - JOptionPane showConfirmDialog 选项的值是什么?