6.函数

在了解函数之前,先看一个问题,ax²(2为次数,即X的平方)+bx+c=0, (a≠0)的通解

  1. import java.util.Scanner;
  2. public class Function {
  3. public static void main(String[] args){
  4. //Scanner可以理解为一个屏幕输入的类,scanner.nextDouble()就是获得屏幕输入的小数,scanner.nextInt()就是获得屏幕输入的整数
  5. Scanner scanner = new Scanner(System.in);
  6. System.out.println("请输入a的值(a不能为0):");
  7. double a = scanner.nextDouble();
  8. System.out.println("请输入b的值:");
  9. double b = scanner.nextDouble();
  10. System.out.println("请输入c的值:");
  11. double c = scanner.nextDouble();
  12. double delta = b*b - 4*a*c;
  13. //System.out.printf是格式化输出,就是先用几个位置替代变量,把完整的一句话的框架打出来,在最后面添上变量
  14. //%f是小数的意思,%d是整数的意思,%s是字符串的意思,字符串可以理解为一句话
  15. if(delta > 0){
  16. System.out.printf("方程%fx²+%fx+%f=0有两个不等的实根\n",a,b,c);
  17. double x1 = (-b + Math.sqrt(delta))/(2*a);
  18. double x2 = (-b - Math.sqrt(delta))/(2*a);
  19. System.out.printf("且两个不等实根为%f,%f",x1,x2);
  20. }else if(delta == 0){
  21. System.out.printf("方程%fx²+%fx+%f=0有两个相等的实根\n",a,b,c);
  22. double x = -b/(2*a);
  23. System.out.printf("%s%f","且两个相等的实根为",x);
  24. }else{
  25. System.out.printf("方程%fx²+%fx+%f=0没有实根\n",a,b,c);
  26. }
  27. }
  28. }

如果我们要复用这些代码,解多个方程,怎么办呢?这个时候,我们就要用到函数了。

  1. import java.util.Scanner;
  2. public class Function {
  3. //QuadraticEquation是一个函数,括号里面是main里面传入的参数,void是返回的类型,就是不返回值
  4. //函数的意义就是多次调用某一个功能
  5. public static void QuadraticEquation(double a,double b,double c){
  6. if(a == 0){
  7. System.out.println("输入的a为0,不是合法的二次方程的参数");
  8. return; //直接返回,后面的都不执行了
  9. }
  10. double delta = b*b - 4*a*c;
  11. //System.out.printf是格式化输出,就是先用几个位置替代变量,把完整的一句话的框架打出来,在最后面添上变量
  12. //%f是小数的意思,%d是整数的意思,%s是字符串的意思,字符串可以理解为一句话
  13. if(delta > 0){
  14. System.out.printf("方程%fx²+%fx+%f=0有两个不等的实根\n",a,b,c);
  15. double x1 = (-b + Math.sqrt(delta))/(2*a);
  16. double x2 = (-b - Math.sqrt(delta))/(2*a);
  17. System.out.printf("且两个不等实根为%f,%f",x1,x2);
  18. }else if(delta == 0){
  19. System.out.printf("方程%fx²+%fx+%f=0有两个相等的实根\n",a,b,c);
  20. double x = -b/(2*a);
  21. System.out.printf("%s%f","且两个相等的实根为",x);
  22. }else{
  23. System.out.printf("方程%fx²+%fx+%f=0没有实根\n",a,b,c);
  24. }
  25. }
  26. public static void main(String[] args){
  27. //Scanner可以理解为一个屏幕输入的类,scanner.nextDouble()就是获得屏幕输入的小数,scanner.nextInt()就是获得屏幕输入的整数
  28. Scanner scanner = new Scanner(System.in);
  29. //while(true){}就是一直执行,有值就计算解
  30. while(true){
  31. System.out.println("依次请输入a、b、c的值(a不能为0,用空格隔开3个值):");
  32. double a = scanner.nextDouble();
  33. double b = scanner.nextDouble();
  34. double c = scanner.nextDouble();
  35. QuadraticEquation(a,b,c);
  36. }
  37. }
  38. }

image.png

6.5作业

  1. 设计一个函数求二元一次方程组的解