import java.io.*;
public class frequency
{
public static void main(String args[])
{
String a1, a2, a3;
double r, l ,c, f; //r=resistance, l=induction, c=capacitance, f=frequency
try
{
BufferedReader buff=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter the RESISTANCE:");
a1=buff.readLine();
r=Double.parseDouble(a1);
System.out.print("Enter the INDUCTANCE:");
a2=buff.readLine();
l=Double.parseDouble(a2);
System.out.print("Enter the CAPACITANCE:");
a3=buff.readLine();
c=Double.parseDouble(a3);
//for(c=0.01;c<=0.1;c--)
//{
f=Math.sqrt((1/l*c) - pow(r,2)/(4*pow(c,2)));
System.out.print("The FREQUENCY is:"+f);
}
//}
catch(Exception e)
{}
}
}
上面的代码是计算频率。代码正在执行,但问题是它显示的结果是我不知道的。它将结果显示为“Nan”
plz解释什么是东西&amp; !!
答案 0 :(得分:1)
我敢打赌,Math.sqrt()的论点是否定的。当我System.out.println(Math.sqrt(-4))
时,我会得到NaN
输出。
答案 1 :(得分:0)
您可能在某处除以零,否则parseDouble
无法正确解析。正如QuantumMechanic指出的那样,你也可能试图找到负数的平方根。
测试的简便方法是打印出解析后的数字。
答案 2 :(得分:0)
如前所述,它不是一个数字,它来自以下一行:
f=Math.sqrt((1/l*c)-pow(r,2)/(4*pow(c,2)));
平方根以下的值可能会变为负数(例如,对于r
的较大值)。负数的平方根未在真实域中定义,因此产生NaN。
注意:公式实际应为Math.sqrt(1/(l*c)-pow(r,2)/(4*pow(c,2)));
答案 3 :(得分:0)
您对Math.sqrt()的输入是 NaN 或小于零
从Javadoc for Math.sqrt();
我已经更改了您的代码以使其正常工作,只要您的输入有效,它就会正常工作。
import java.io.*;
public class Frequency {
public static void main(String args[]) {
double r, l, c, f; //r=resistance,l=induction,c=capacitance,f=frequency
try {
BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter the RESISTANCE:");
r = Double.parseDouble(buff.readLine());
System.out.print("Enter the INDUCTION:");
l = Double.parseDouble(buff.readLine());
System.out.print("Enter the CAPACITANCE:");
c = Double.parseDouble(buff.readLine());
f = Math.sqrt((1 / l * c) - Math.pow(r, 2) / (4 * Math.pow(c, 2)));
System.out.println("The FREQUENCY is:" + f);
}
catch (Exception e) {
System.out.println(e);
}
}
}
以下输入程序成功退出
run:
Enter the RESISTANCE:10
Enter the INDUCTION:10
Enter the CAPACITANCE:10
The FREQUENCY is:0.8660254037844386
BUILD SUCCESSFUL (total time: 12 seconds)
对于以下输入程序成功退出但打印 NAN (非数字)
run:
Enter the RESISTANCE:0
Enter the INDUCTION:0
Enter the CAPACITANCE:0
The FREQUENCY is:NaN
BUILD SUCCESSFUL (total time: 9 seconds)
请提供您的意见。