class SumTestClass{ public int sum(int a,int b){ return a+b; } public double sum(double a,double b){ return a+b; } public int sum(int a,int b,int c){ return a+b+c; } public double sum(double a,double b,double c){ return a+b+c; } public float sum(float a,float b){ return a+b; } } //修改主类名替换文件名,自行替换数字 public class Experiment_03_02 { public static void main(String[] args) { SumTestClass st=new SumTestClass(); int a=5; int b=6; int c=7; double d=5.0; double e=6.0; double f=7.0; float g=5.0F; float h=6.0F; System.out.println(st.sum(a,b)); System.out.println(st.sum(a,b,c)); System.out.println(st.sum(d,e)); System.out.println(st.sum(d,e,f)); System.out.println(st.sum(g,h)); } }
时间: 2024-04-11 12:31:56 浏览: 81
这段代码定义了一个名为 `SumTestClass` 的类,其中包含了多个重载的 `sum` 方法。这些方法用于计算不同类型的数字的和。
在 `SumTestClass` 类中,有以下 `sum` 方法的定义:
1. `public int sum(int a, int b)`:接受两个整数参数,并返回它们的和。
2. `public double sum(double a, double b)`:接受两个双精度浮点数参数,并返回它们的和。
3. `public int sum(int a, int b, int c)`:接受三个整数参数,并返回它们的和。
4. `public double sum(double a, double b, double c)`:接受三个双精度浮点数参数,并返回它们的和。
5. `public float sum(float a, float b)`:接受两个单精度浮点数参数,并返回它们的和。
在 `Experiment_03_02` 类的 `main` 方法中,首先创建了一个 `SumTestClass` 的实例 `st`。然后定义了几个变量用于测试不同的 `sum` 方法。
最后,通过调用不同的 `sum` 方法,并将结果打印输出到控制台。
相关问题
怎么调用函数public static double trapezoidalMethod(double a, double b, int n, Function<Double, Double> f) { double h = (b - a) / n; double sum = 0.0; for (int i = 1; i < n; i++) { double x = a + i * h; sum += f.apply(x); } return h * (f.apply(a) + f.apply(b) + 2.0 * sum) / 2.0;}
要调用该函数,需要传递四个参数:
- 参数a和b:表示积分区间的左右端点
- 参数n:表示将积分区间分成n个小区间
- 参数f:表示被积函数,需要传递一个实现了Function<Double, Double>接口的Lambda表达式或者方法引用
以下是一个调用示例,假设我们需要计算函数f(x)=x^2在区间[0,1]上的积分:
```
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
double a = 0.0; // 积分区间左端点
double b = 1.0; // 积分区间右端点
int n = 1000; // 将积分区间分成1000个小区间
Function<Double, Double> f = (x) -> x * x; // 被积函数 f(x) = x^2
double result = trapezoidalMethod(a, b, n, f); // 调用积分函数
System.out.println("积分的近似值为:" + result);
}
// 梯形法求解积分的函数
public static double trapezoidalMethod(double a, double b, int n, Function<Double, Double> f) {
double h = (b - a) / n;
double sum = 0.0;
for (int i = 1; i < n; i++) {
double x = a + i * h;
sum += f.apply(x);
}
return h * (f.apply(a) + f.apply(b) + 2.0 * sum) / 2.0;
}
}
```
在上面的示例中,我们首先定义了积分区间的左右端点和将积分区间分成的小区间数。然后,我们使用Lambda表达式定义了被积函数f(x)=x^2。最后,我们调用了积分函数trapezoidalMethod,并将其返回值赋值给result变量,最终输出积分的近似值。
需要注意的是,该方法的精度取决于n的大小,n越大,积分的近似值越精确。但是,n过大也会导致计算量增大和计算时间增长。因此,在实际使用中需要根据具体情况选择合适的n值。
package setp17; import java.util.Arrays; import java.util.Scanner; public class HelloWorld { /********** Begin **********/ /** * 第一题:定义一个方法 接收两个整数类型的参数 a和b,返回两个数的和 返回值类型为int 方法名为:getSum */ static int getSum(int a,int b){ int sum=a+b; return sum; } /** * 第二题: 定义一个方法 接收三个double类型参数a,b,c, 返回这三个数的平均值 返回值类型为double 方法名为:getAvg */ public static void getAvg(double a,double b,double c){ double avg=(a+b+c)/3.0; return avg; } /** * 第三题: 定义一个方法 接收两个参数 a 和b 打印a行 b列的一个矩形 不需要返回值 方法名为:printRect */ public static void printRect(int a,int b){ for(int i=0;i<a;i++){ for(int j=0;j<b;j++){ System.out.println("*"); } } } /** * 第四题:定以一个方法,接收整形数组 为参数 对这个数组进行升序排序 最后输出该数组 不需要返回值 方法名为 sortArr */ public static void storArr(int a []){ for(int j=0;j<a.length;j++){ for(int i=0;i<a.length-1;i++){ if(a[i]>a[i+1]){ int temp = a[i]; a[i] = a[i+1]; a[i+1] = temp; } } } /** * 第五题 * 你只需要实现for 循环括号的内容就可 ,打印语句系统已经给你完成 */ static void Print99() { for (int j=1;j<10;j++) { for(int i=1;i<10;i++) { if(i<=j){ System.out.print(j + " * " + i + " = " + i * j + "\t"); } } System.out.println(); } } /********** End **********/ } 怎么修改
这段代码存在几个问题:
1. 第二题的方法定义中,返回类型为void,但是方法体中有return语句,需要将返回类型修改为double。
2. 第三题的方法定义中,打印矩形的语句应该使用System.out.print而不是System.out.println,否则会在每个*后面打印一个换行符。
3. 第四题的方法定义中,方法名应该是sortArr而不是storArr。
4. 第五题的方法定义中,方法名应该是Print99而不是Print9。
修改后的代码如下:
```java
package setp17;
import java.util.Arrays;
import java.util.Scanner;
public class HelloWorld {
/**
* 第一题:定义一个方法 接收两个整数类型的参数 a和b,返回两个数的和
* 返回值类型为int 方法名为:getSum
*/
static int getSum(int a, int b) {
int sum = a + b;
return sum;
}
/**
* 第二题: 定义一个方法 接收三个double类型参数a,b,c, 返回这三个数的平均值
* 返回值类型为double 方法名为:getAvg
*/
public static double getAvg(double a, double b, double c) {
double avg = (a + b + c) / 3.0;
return avg;
}
/**
* 第三题: 定义一个方法 接收两个参数 a 和b 打印a行 b列的一个矩形
* 不需要返回值 方法名为:printRect
*/
public static void printRect(int a, int b) {
for (int i = 0; i < a; i++) {
for (int j = 0; j < b; j++) {
System.out.print("*");
}
System.out.println();
}
}
/**
* 第四题:定以一个方法,接收整形数组为参数 对这个数组进行升序排序 最后输出该数组
* 不需要返回值 方法名为 sortArr
*/
public static void sortArr(int a[]) {
for (int j = 0; j < a.length; j++) {
for (int i = 0; i < a.length - 1; i++) {
if (a[i] > a[i + 1]) {
int temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
}
System.out.println(Arrays.toString(a));
}
/**
* 第五题
* 你只需要实现for 循环括号的内容就可 ,打印语句系统已经给你完成
*/
static void Print99() {
for (int j = 1; j < 10; j++) {
for (int i = 1; i < 10; i++) {
if (i <= j) {
System.out.print(j + " * " + i + " = " + i * j + "\t");
}
}
System.out.println();
}
}
}
```
阅读全文