gpt4 book ai didi

java - 为什么netbeans不能运行程序,因为这是一个double类型不匹配异常,尽管代码中的所有变量都是double?

转载 作者:行者123 更新时间:2023-12-02 09:58:48 24 4
gpt4 key购买 nike

我在netbeans中编写了一段代码,目的是计算五边形的面积,我用所有double类型的变量编写了它。问题是,当我输入 double 来测试代码时,应用程序提示不匹配异常。

我输入一个 int 变量并且它有效,我尝试更改代码但它不起作用。

package ejercicios.de.practica.capitulo4_5;


import java.util.Scanner;

public class EjerciciosDePracticaCapitulo4_5 {
public static void main(String[] args) {
// Crear variables
double Area, s, r;
final double PI= 3.1416;
final double TREINTAYSEIS= PI/5;
Scanner input= new Scanner (System.in);
System.out.println(" Enter the lenght from a center to a vertex of the pentagon: ");
r= input.nextDouble();
s= 2*r*(Math.sin(TREINTAYSEIS));
Area= (5*(Math.pow(s,2)))/4*(Math.tan(TREINTAYSEIS));
System.out.println("The area of the pentagon is " + Area);
}

}

如果我输入从中心到顶点的长度:5.5,五边形的面积预计为71.92,但在我的程序中,它不接受双重输入。我必须输入 int 5,结果是 37.7007586539534。

enter image description here

最佳答案

这是因为您的面积方程没有按照您期望的顺序进行计算。您需要更具体地说明您希望如何计算方程。括号内包含的方程部分始终首先计算,因此请记住:

而不是:

Area= (5 * (Math.pow(s, 2))) / 4 * (Math.tan(TREINTAYSEIS));

这样做:

Area = (5 * Math.pow(s, 2)) / (4 * Math.tan(TREINTAYSEIS));

4 * Math.tan(TREINTAYSEIS) 两边加上括号。你有很多不必要的括号,应该像我所做的那样去掉它,因为它只会让事情变得困惑。另外,将事物分开可以帮助您更清楚地看到事物。就我个人而言,如果我进行 double 计算,那么我会尝试在该计算中使用所有 double :

Area = (5.0d * Math.pow(s, 2.0d)) / (4.0d * Math.tan(TREINTAYSEIS));

附注:如果您只想使用 PI 的精度为 4,那么也许您应该考虑以该精度进行所有计算。

关于java - 为什么netbeans不能运行程序,因为这是一个double类型不匹配异常,尽管代码中的所有变量都是double?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55788535/

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