提示用户输入两个数,并输出这两个数的平均值(若输入个数或格式有误,提示用户输入错误),使用try,catch,finally报错
package com.xmu.hellojava.main;
import com.xmu.hellojava.domain.Student;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class StudentTest {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//Calculating the average
System.out.printf("Please enter two numbers:(Separated by spaces)\n");//Prompt message
StudentTest t = new StudentTest();
System.out.println("Average Value:"+t.average());
//end calculating the average
}
public double average() throws IOException
{
double []result=new double[2];
while(true)
{
BufferedReader input5= new BufferedReader(new InputStreamReader(System.in));
String str=input5.readLine();//读取字符串
String[]new_str= str.split("\\s+");//以空格分割字符串
double []num=new double[new_str.length];
int flag=-1,flag1=-1;//用于判断输入结果是否正确
for (int i = 0; i<new_str.length; i++){
try {
num[i]=Double.valueOf(new_str[i].toString());
flag1=2;
} //end try
catch (NumberFormatException e) {
e.printStackTrace();
}//end catch
}//将字符串转化为数,结束循环
finally{
try{
flag=new_str.length;
if(flag!=2||flag1!=2){
Exception me=new Exception("Invalid input");
throw me;
}//end if
result[0]=num[0];
result[1]=num[1];
break;
}//end try
catch(Exception e)
{//若输入个数或格式有误,提示用户输入错误
System.out.println(e.getMessage()+",try again\n");//Prompt message
}//end catch
}//end finally
}//end while
return (result[0]+result[1])/2.0;
}//average
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
每次while循环就生成一个BufferedReader对象,而且不关闭?