Java Math.sqrt函数
当我尝试9时,它的输出是7.54,应该是3。为什么?Java Math.sqrt函数,java,joptionpane,Java,Joptionpane,当我尝试9时,它的输出是7.54,应该是3。为什么?input.charAt()返回字符,而不是数字的数值。这意味着您得到的是'9',而不是9。'9'的平方根是57,所以你最终要取它的平方根 请尝试Math.sqrt(input.charAt(0)-“0”) 如果要使代码更通用,请考虑使用或代替查看单个字符。 输入>字符()/代码>返回字符,而不是数字< /强>的数值。这意味着您得到的是'9',而不是9。'9'的平方根是57,所以你最终要取它的平方根 请尝试Math.sqrt(input.cha
input.charAt()
返回字符,而不是数字的数值。这意味着您得到的是'9'
,而不是9
。'9'
的平方根是57
,所以你最终要取它的平方根
请尝试Math.sqrt(input.charAt(0)-“0”)
如果要使代码更通用,请考虑使用或代替查看单个字符。
<代码>输入>字符()/代码>返回<强>字符,而不是数字< /强>的数值。这意味着您得到的是'9'
,而不是9
。'9'
的平方根是57
,所以你最终要取它的平方根
请尝试Math.sqrt(input.charAt(0)-“0”)
如果你想让你的代码更通用一点,考虑使用或代替查看单个字符。
你的问题是使用九号ASCII代码而不是九作为整数。 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(c)之后,现在将char转换为int
因此Math.Sqrt得到57作为参数
对于正确的工作,您应该将字符解析为整数,如Bala R 您的问题是,您使用的是9号ASCII码,而不是9号作为整数
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(c)之后,现在将char转换为int
因此Math.Sqrt得到57作为参数
对于正确的工作,您应该将字符解析为整数,如Bala R 你也可以这样做-
char c = input.charAt(0);
将char转换为string并从字符串中解析double。您也可以这样做-
char c = input.charAt(0);
将字符转换为字符串,并从字符串中解析出double。@aix我可以知道为什么要添加-'0'?@jcdavy:我减去了
'0'
,因为这会将表示为字符的数字转换为其等效数字(即'0'
变成0
,'1'
变成1
,等等)@aix我可以知道为什么要加-'0'?@jcdavy:我减去了'0'
,因为这会将表示为字符的数字转换为其等效数字(即'0'
变成0
,'1'
变成1
,等等)。