JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2
F盘下有aa.txt文件内容如下 60 70 65 70...如此竖排顺序往下,共17个数字
求其平均数
Java code?package demo1; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; public class AVGStream { public static void main(String[] args) { try{ File file=new File("F:\\aa.txt"); FileInputStream fis=new FileInputStream(file); InputStreamReader is=new InputStreamReader(fis); BufferedReader br=new BufferedReader(is); String line=null; int n = 0; double total = 0; while((line=br.readLine())!=null) { total+=Integer.parseInt(line); n++; } double avg=(total/n); System.out.println(avg); } catch(Exception ex) {} } }
打了断点,while循环到16个都可以正常累加,但是第17个就报错了,错误代码为: ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2 JDWP exit error AGENT_ERROR_NO_JNI_ENV(183): [../../../src/share/back/util.c:838] 百度搜索为JDK问题,我将while循环改成for,虽然只能执行2位相加但是能正常输出,应该不是JDK的问题吧
用你的代码我做了下测试,按你的要求我发现没错!!但我发现要是把你的aa.txt中的某行数字的前面或者后面加上空格时就不能打印出结果,建议楼主把 Java code?1 total+=Integer.parseInt(line); 这行代码改为 Java code?1 total+=Integer.parseInt(line.trim()); while((line=br.readLine())!=null){ line=line.trim(); if("".equals(line)){ continue; } total+=Integer.parseInt(line); n++; }
注意去掉空行,编码时要小心。
|