You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Java中出现的possible lossy conversion(有损转换)报错

报错原因分析
  • Java语法强制要求数组下标必须为int整数类型,你代码中用来当下标的变量j被定义为了double类型,直接用在A[j]的位置时,编译器会判定double转int可能存在精度丢失,直接抛出对应错误。
  • 额外的逻辑问题:你当前代码里的平均值变量ave还没有完成计算赋值,直接存入数组也得不到正确结果,同时声明两个Scanner对象属于冗余代码。
修复方案
  1. 把用作数组下标的变量改为int类型,如果你要把平均值存入数组的第一个位置,直接用0当下标即可,无需额外声明j变量
  2. 补全平均值计算逻辑:平均值 = 总和 / 有效输入元素个数
  3. 删除冗余的第二个Scanner对象,用完Scanner后主动关闭避免资源泄漏
修复后完整代码
import java.util.Scanner;

public class LabScratch
{ 
 public static void main(String args[]) { 
 int i, sum = 0, ctr = 0; 
 double ave = 0.0; 
 
 double [] A = new double [10];
 System.out.println("Enter 10 integers: ");
 Scanner input = new Scanner (System.in);      
 
 for (i = 0; i < A.length; i++) { 
     A[i] = input.nextDouble(); 
     sum += A[i];
     ctr++; 
 }
 // 计算平均值,乘以1.0是为了避免整数除法截断小数
 ave = sum * 1.0 / ctr;
 // 用int类型的0作为数组下标
 A[0] = ave;
 System.out.println("\n平均值为:" + A[0]);
 input.close();
 }
}

内容的提问来源于stack exchange,提问作者din

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:36:03