6.函数
在了解函数之前,先看一个问题,ax²(2为次数,即X的平方)+bx+c=0, (a≠0)的通解
import java.util.Scanner;
public class Function {
public static void main(String[] args){
//Scanner可以理解为一个屏幕输入的类,scanner.nextDouble()就是获得屏幕输入的小数,scanner.nextInt()就是获得屏幕输入的整数
Scanner scanner = new Scanner(System.in);
System.out.println("请输入a的值(a不能为0):");
double a = scanner.nextDouble();
System.out.println("请输入b的值:");
double b = scanner.nextDouble();
System.out.println("请输入c的值:");
double c = scanner.nextDouble();
double delta = b*b - 4*a*c;
//System.out.printf是格式化输出,就是先用几个位置替代变量,把完整的一句话的框架打出来,在最后面添上变量
//%f是小数的意思,%d是整数的意思,%s是字符串的意思,字符串可以理解为一句话
if(delta > 0){
System.out.printf("方程%fx²+%fx+%f=0有两个不等的实根\n",a,b,c);
double x1 = (-b + Math.sqrt(delta))/(2*a);
double x2 = (-b - Math.sqrt(delta))/(2*a);
System.out.printf("且两个不等实根为%f,%f",x1,x2);
}else if(delta == 0){
System.out.printf("方程%fx²+%fx+%f=0有两个相等的实根\n",a,b,c);
double x = -b/(2*a);
System.out.printf("%s%f","且两个相等的实根为",x);
}else{
System.out.printf("方程%fx²+%fx+%f=0没有实根\n",a,b,c);
}
}
}
如果我们要复用这些代码,解多个方程,怎么办呢?这个时候,我们就要用到函数了。
import java.util.Scanner;
public class Function {
//QuadraticEquation是一个函数,括号里面是main里面传入的参数,void是返回的类型,就是不返回值
//函数的意义就是多次调用某一个功能
public static void QuadraticEquation(double a,double b,double c){
if(a == 0){
System.out.println("输入的a为0,不是合法的二次方程的参数");
return; //直接返回,后面的都不执行了
}
double delta = b*b - 4*a*c;
//System.out.printf是格式化输出,就是先用几个位置替代变量,把完整的一句话的框架打出来,在最后面添上变量
//%f是小数的意思,%d是整数的意思,%s是字符串的意思,字符串可以理解为一句话
if(delta > 0){
System.out.printf("方程%fx²+%fx+%f=0有两个不等的实根\n",a,b,c);
double x1 = (-b + Math.sqrt(delta))/(2*a);
double x2 = (-b - Math.sqrt(delta))/(2*a);
System.out.printf("且两个不等实根为%f,%f",x1,x2);
}else if(delta == 0){
System.out.printf("方程%fx²+%fx+%f=0有两个相等的实根\n",a,b,c);
double x = -b/(2*a);
System.out.printf("%s%f","且两个相等的实根为",x);
}else{
System.out.printf("方程%fx²+%fx+%f=0没有实根\n",a,b,c);
}
}
public static void main(String[] args){
//Scanner可以理解为一个屏幕输入的类,scanner.nextDouble()就是获得屏幕输入的小数,scanner.nextInt()就是获得屏幕输入的整数
Scanner scanner = new Scanner(System.in);
//while(true){}就是一直执行,有值就计算解
while(true){
System.out.println("依次请输入a、b、c的值(a不能为0,用空格隔开3个值):");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
QuadraticEquation(a,b,c);
}
}
}
6.5作业
- 设计一个函数求二元一次方程组的解