通过java实现输入系数求一元二次方程根,学习Scanner()、split()和Substring()函数

Bertha 。 2022-05-28 12:58 269阅读 0赞

通过java实现输入系数求一元二次方程根,学习Scanner()、split()和Substring()函数

学习目的:
1、针对scan未关闭问题处理
2、参数输入,可以用scan直接获取,也可以用split()分割
3、Substring()获取子字符串学习

1、用try{}catch{} finally{}解决函数未关闭问题

问题提示,如下(有时未必会影响最后输出结果):
这里写图片描述

解决代码:

  1. try { ...... //省略操作代码
  2. }
  3. catch(Exception e){ //输出错误提示信息
  4. System.out.println(e);
  5. }
  6. finally { //不管什么情况都会执行,都会执行关闭scan
  7. scan.close();
  8. }

加入try{}catch{} finally{} 后,提示显示,当然一些程序也可以直接在末尾加入scan.close()语句关闭,根据代码需要判断!

2、二次方程参数获取

(1)直接用Scanner()输入获取,然后用Double.parseDouble(),将获取参数转换为double型:

  1. System.out.println("请输入:a、b、c:");//输出提示信息
  2. String a1=scan.next(); //获取第一个输入元素并赋值给a1
  3. String b1=scan.next(); //获取第一个输入元素并赋值给b1
  4. String c1=scan.next(); //获取第一个输入元素并赋值给c1

(2)用正则表达式,并用split()分割字符串

  1. System.out.println("请输入:a=?&b=?&c=?");//输出提示信息
  2. String str = scan.next();//记录键盘录入的字符串
  3. String regex = "[&]";//正则表达式
  4. String[] arr = str.split(regex);//按正则切开
  5. for(int i=0;i<arr.length;i++) {
  6. //遍历输出处理后的字符串数组
  7. System.out.println(arr[i]);
  8. }

该部分输出如下:a=1 b=6 c=4,同样用Double.parseDouble(),将获取参数转换为double型:
这里写图片描述

3、Substring()函数获取子字符串

(1)接下来我们要提取输出的1、6、4元素,由上面输出我们知道有arr[0]元素为a=1,arr[1]元素为b=6,arr[2]元素为c=4,我们由以下可实现得到a1=1,b1=6,c1=4.

  1. String a1 = arr[0].substring(2);//取出字符串数组中第一个元素从"="开始到结尾的字符串,substring(int beginIndex)
  2. String b1 = arr[1].substring(2);//取出字符串数组中第二个元素从"="开始到结尾的字符串
  3. String c1 = arr[2].substring(2);//取出字符串数组中第三个元素从"="开始到结尾的字符串

(2)substring()函数简介
substring()方法可以对字符串进行截取。

1> substring(int beginIndex)

该方法返回从指定的索引位置开始截取直到该字符串结尾的子串。
如:
String str = “Hello World”; //定义字符串str
String substr = str.substring(3); //获取截取字符串
输出为 to World

2> substring(int beginIndex,endIndex)

该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的子串
用上一个例子如:
String str = “Hello World”; //定义字符串str
String substr = str.substring(0,3); //获取截取字符串
输出为 Hel

所以由arr[0]值为a=1,故arr[0].substring(2)就能得到1,别的同理分析。

4 一元二次方程求解根代码

此处考虑了简单的输入情况,全面分析代码可参看下面网盘链接:

  1. Scanner scan = new Scanner(System.in);//键盘录入
  2. try {
  3. System.out.println("请输入:a、b、c:");//输出提示信息
  4. String a1=scan.next();
  5. String b1=scan.next();
  6. String c1=scan.next();
  7. double a = Double.parseDouble(a1);//就数字字符串转换为double类型
  8. double b = Double.parseDouble(b1);
  9. double c = Double.parseDouble(c1);
  10. System.out.println(a);//输出转换后的数据
  11. System.out.println(b);
  12. System.out.println(c);
  13. if((b*b-4*a*c)<0) {
  14. //判断(b*b-4*a*c)<0是否成立
  15. System.out.println("方程无实根");//控制台输出
  16. }else if((b*b-4*a*c)==0){
  17. //判断(b*b-4*a*c)==0是否成立
  18. System.out.println("方程有一个实根");
  19. double x1 = ((-b)/(2*a));//计算根并赋值给变量x1
  20. System.out.println("根为:"+x1);//控制台输出"根为:"+x1
  21. }else {
  22. System.out.println("方程有两个实根");
  23. double x2 = ((-b-Math.sqrt(b*b-4*a*c))/(2*a));//计算根并赋值给变量x2
  24. double x3 = ((-b+Math.sqrt(b*b-4*a*c))/(2*a));//计算根并赋值给变量x3
  25. System.out.println("根为:"+x2+"和"+x3);//控制台输出结果
  26. }
  27. }
  28. catch(Exception e){ //输出错误提示信息
  29. System.out.println(e);
  30. }
  31. finally { //不管什么情况都会执行,都会执行关闭scan
  32. scan.close();
  33. }
  34. }

结果:
这里写图片描述

代码分析:
链接:https://pan.baidu.com/s/1rv97mmoy2YzNqZN7NuEJYg 密码:lq72

发表评论

表情:
评论列表 (有 0 条评论,269人围观)

还没有评论,来说两句吧...

相关阅读

    相关 二次方程

    1 问题 怎么合理结合函数,数学知识来用代码解决一元二次方程。 2 方法 一元二次方程ax2+bx+c=0,a、b、c的值由用户在三行中输入,根据用户输入的数值求解方程的