提示用户输入两个数,并输出这两个数的平均值(若输入个数或格式有误,提示用户输入错误),使用try,catch,finally报错

发布于 2022-09-04 13:05:00 字数 1982 浏览 34 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瑾兮 2022-09-11 13:05:00
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test {
    public static void main(String[] args) throws IOException {
        Test t = new Test();
        t.waitInput();
        System.out.println("Average Value:" + t.average());
    }

    private double num1;
    private double num2;

    public void waitInput() throws IOException {
        while (true) {
            System.out.printf("Please enter two numbers:(Separated by spaces)\n");
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            String line = reader.readLine();
            String[] parts = line.trim().split("\\s+");

            if (parts.length < 2) {
                System.out.println("ERROR: incorrect input");
                continue;
            }

            try {
                num1 = Double.parseDouble(parts[0]);
                num2 = Double.parseDouble(parts[1]);
                break;
            } catch (NumberFormatException e) {
                e.printStackTrace();
            }
        }
    }

    public double average() throws IOException {
        return (num1 + num2) / 2;
    }
}
你曾走过我的故事 2022-09-11 13:05:00

每次while循环就生成一个BufferedReader对象,而且不关闭?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文