gpt4 book ai didi

java - NaN 输出,我不知道为什么

转载 作者:行者123 更新时间:2023-11-30 01:52:58 26 4
gpt4 key购买 nike

我正在创建代码来帮助自己完成一些作业,但“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[我],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 的方式。

关于java - NaN 输出,我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55430697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com