F盘下有aa.txt文件内容如下
60
70
65
70...如此竖排顺序往下,共17个数字求其平均数
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的问题吧,求教
60
70
65
70...如此竖排顺序往下,共17个数字求其平均数
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的问题吧,求教
解决方案 »
- 让变量X == X 输出结果为 false
- >>>> 请教用jawind如何获取dll中方法的返回值? <<<<
- 关于JTable的文件存储问题
- 有人知道 Windows下 怎么监控的Java程序运行吗?
- 最近喜欢上了一个MM,她人很好!很希望能和她有一个幸福的未来...碰巧今天她问了一个问题,大家帮帮忙。
- 谁跟我解释一下下面java多线程的经典的问题?
- jijijijii
- 请问关于Runtime的exec
- 高分求购,存储器管理,和设备管理的源代码,快速结帐,来着有分!
- mssql的JDBC那有得下,听说微软站上的那个只能连自己的SQL,有没有完全版的呀,在哪可以下?
- 更改文件名出现错误求解释
- 谁能帮我看看这个问题怎么解决,弄的我头都大了
line=line.trim();
if("".equals(line)){
continue;
}
total+=Integer.parseInt(line);
n++;
}注意去掉空行,编码时要小心。
if("".equals(line)){
continue;
}这条代码,你想的很全面啊,若aa.txt中存在“”这种空值,就可以跳过,再执行一次循环条件,而不是,while中的语句!高手
import java.io.*;
import javax.swing.JOptionPane;
public class Array1 {
public double avg=0.0;
public Array1() throws IOException{
this.initavg();
}
private void initavg() throws IOException{
BufferedReader br =null;
try {
br= new BufferedReader(new FileReader(new File("d:/1.txt")));
double i=0.0;
double j=0.0;
while(br.ready()){
//System.out.println(br.readLine());
int a=0;
try {
a = Integer.parseInt( br.readLine());
} catch (NumberFormatException e) {
j++;
continue;
}
avg+=a;
i++;
}
System.out.println("数据总数为"+(i+j)+"个,可用数据为"+i+"个,只计算可读数据的平均值");
if(i==0){
JOptionPane.showMessageDialog(null, "无可用成绩");
}else{
avg = avg/i;
}
} finally{
br.close();
}
} public static void main(String[] args) {
try {
System.out.println(new Array1().avg);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}