[英]NaN output, i can't find out why
我正在創建代碼以幫助自己完成一些功課,但是“ C”類存在問題。 它一直給我NaN輸出,您能看看並告訴我我做錯了嗎?
我仔細檢查了一下,發現問題出在這行:
C[i][j] = C[i][j] * (Math.sqrt(((Math.pow(U[i][j],2)/Math.pow(I[i][j],2)))-Math.pow(R[i],2)));
主-
public class Main {
public static void main(String[] args) {
Wzory wzor = new Wzory();
wzor.scan();
wzor.xU();
wzor.xI();
wzor.C();
}
}
package FizA;
import java.util.Scanner;
import java.lang.Math;
public class Wzory {
//przypisane
double[] f = new double[2],xf = new double[2],R = new double[2],xR = new double[2];
double[][] U = new double[2][4],I = new double[2][4];
double pi=3.1415;
//obliczone
double[][] xU = new double[2][4], xI = new double[2][4], C = new double[2][4], xC = new double[2][4];
public void scan()
{
Scanner scan = new Scanner(System.in);
for(int i=0; i<2; i++)
{
System.out.println("Podaj 'f':");
f[i] = scan.nextDouble();
System.out.println("Podaj 'xf':");
xf[i] = scan.nextDouble();
System.out.println("Podaj 'R':");
R[i] = scan.nextDouble();
System.out.println("Podaj 'xR':");
xR[i] = scan.nextDouble();
for(int j=0; j<4; j++)
{
System.out.println("Podaj 'U':");
U[i][j] = scan.nextDouble();
System.out.println("Podaj 'I':");
I[i][j] = scan.nextDouble();
}
}
scan.close();
}
public void xU()
{
for(int i=0; i<2; i++)
{
for(int j=0; j<4; j++)
{
xU[i][j] = 0.005 * U[i][j];
xU[i][j] = xU[i][j] + 0.003;
System.out.println("xU-"+i+","+j+"="+xU[i][j]);
}
}
}
public void xI()
{
for(int i=0; i<2; i++)
{
for(int j=0; j<4; j++)
{
xI[i][j] = 0.015 * I[i][j];
xI[i][j] = xI[i][j] + 0.000003;
System.out.println("xI"+i+","+j+"="+xI[i][j]);
}
}
}
public void C()
{
for(int i=0; i<2; i++)
{
for(int j=0; j<4; j++)
{
C[i][j] = 2*pi*f[i];
C[i][j] = C[i][j] * (Math.sqrt(((Math.pow(U[i][j],2)/Math.pow(I[i][j],2)))-Math.pow(R[i],2)));
C[i][j] = Math.pow(C[i][j],-1);
System.out.println("C"+i+","+j+"="+C[i][j]);
}
}
}
}
您正在對此求平方根,Math.pow(U [i] [j],2)/Math.pow(I [i] [j],2)))-Math.pow(R [i], 2)
您的NaN來自:
1)Math.sqrt方法
2)和減去Math.pow(R [i],2),因為負數沒有平方根,所以平方可以是0或正數。
例:
當U [i] [j]等於2的冪/ I [i] [j]等於2的冪時,R [i]等於2的冪時,給出一個負數,則此負數的Math.sqrt即使您將數字與C [i] [j]相乘並將其存儲回C [i] [j]並進行打印,該數字也會給出NaN。
那就是獲得NaN的方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.