Java 2D数组存储double计算值时出现double无法转int报错求助
报错原因分析
- 变量类型声明不匹配:代码中
cuota、cantPrestamo被声明为double数组类型,但后续给二者赋值的都是单个double数值,类型完全不对应。 - 数组初始化规则错误:Java中初始化数组时,方括号内指定数组长度的参数必须为正整数(
int类型)。你代码中new double [cuota][cantPrestamo]传入的两个参数都是double类型的计算结果,编译器强制做类型转换时触发了“double cannot be converted to int”的报错,和数组能否存储double类型数据完全无关。
修复方案
结合你代码中预定义了3名员工的场景,我们可以将二维数组设置为3行(对应3位员工)、3列(分别存储单名员工的贷款金额、贷款期数、每月还款额),修复后可正常运行的完整代码如下:
import java.util.Scanner; public class LoanCalculator { public static void main(String[] args) { Scanner leer = new Scanner(System.in); // 年利率18%,按月计息 double interes, numerador, denominador; int periodo = 0; // 修正1:将cuota、cantPrestamo改为普通double类型,而非数组 double cuota; double cantPrestamo; interes = .18/12; String[] empleados = {"Jose Rivera", "Maria Zuniga", "Francisco Sanchez"}; System.out.print("Introduzca el monto del prestamo: "); cantPrestamo = leer.nextDouble(); System.out.print("Introduzca la cantidad en meses: "); periodo = leer.nextInt(); numerador = interes * Math.pow(1 + interes, periodo); denominador = Math.pow(1 + interes, periodo)-1; cuota = cantPrestamo * (numerador / denominador); // 修正2:二维数组长度用int类型参数,3行对应3名员工,3列分别存贷款额、期数、月供 double[][] cuotaPeriodo = new double [3][3]; // 示例:将当前计算的贷款信息存入第一名员工的对应位置 cuotaPeriodo[0][0] = cantPrestamo; cuotaPeriodo[0][1] = periodo; cuotaPeriodo[0][2] = cuota; // 验证输出:遍历二维数组打印所有存储的信息 System.out.println("员工姓名\t贷款额(Lps.)\t贷款期数(月)\t月供(Lps.)"); for (int i = 0; i < empleados.length; i++) { System.out.printf("%s\t%.2f\t%.0f\t%.2f\n", empleados[i], cuotaPeriodo[i][0], cuotaPeriodo[i][1], cuotaPeriodo[i][2]); } leer.close(); } }
如果需要录入多名员工的贷款信息,在外层加循环依次录入、存储到二维数组对应行即可。
内容的提问来源于stack exchange,提问作者tourian
相关产品推荐
相关产品推荐

