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);
}
}
Math.sqrt(input.charAt(0))当我尝试9它输出7.54时应该是3.为什么会这样?
答案 0 :(得分:5)
input.charAt()
会返回字符,而不是数字的数值。这意味着您获得了'9'
,而不是9
。 '9'
的{{3}}为57
,因此您最终会获得平方根。
请尝试Math.sqrt(input.charAt(0) - '0')
。
如果您想让代码更通用一些,请考虑使用ASCII value或Integer.valueOf()
而不是查看单个字符。
答案 1 :(得分:0)
你的问题是你使用9号ASCII码而不是9号整数。
char c = input.charAt(0);
之后执行Math.Sqrt(c),现在将char转换为int。
所以Math.Sqrt得到57作为参数。
为了正确的工作,你应该将字符解析为整数,就像Bala R回答的那样。
答案 2 :(得分:0)
你也可以 -
Math.sqrt(Double.parseDouble(String.valueOf(input.charAt(0))));
将char转换为string并从字符串中解析double。