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'
,而不是 9
。 ASCII value '9'
的个数是 57
,因此您最终要对其求平方根。
改为尝试 Math.sqrt(input.charAt(0) - '0')
。
如果你想让你的代码更通用一点,考虑使用Integer.valueOf()
或 Double.valueOf()
而不是查看单个字符。
关于java - Math.sqrt 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7714707/