下列程序定义了一个TestEx1公共类,并在其中定义了多个重载方法test1()和test2(),请编译调试发现其错误,并指出错误原因并修改运行 public class TestEx1 { private int a,b,c; public TestEx1(int a,int b){ this.a=a; this.b=b; } public void test1(){ } public void test1(int t){ } public void test1(float t){ } public void test1(float t1,int t2){ } public int test1(double d){ return this.a; } public void test1(){ return this.a; } public static void test2(){ } public static void main(String[] args) { TestEx1 tEx1 = new TestEx1(); TestEx1 tEx2 = new TestEx1(10,100); tEx1.test1(); TestEx1.test1(10.0f); TestEx1.test2(); } }
时间: 2023-06-16 13:02:52 浏览: 182
以下是修改后的代码:
```java
public class TestEx1 {
private int a, b, c;
public TestEx1(int a, int b) {
this.a = a;
this.b = b;
}
public void test1() {
}
public void test1(int t) {
}
public void test1(float t) {
}
public void test1(float t1, int t2) {
}
public int test1(double d) {
return this.a;
}
// 修改方法名为test3,并且去掉返回值类型void前的int
public void test3() {
System.out.println(this.a);
}
public static void test2() {
}
public static void main(String[] args) {
TestEx1 tEx1 = new TestEx1(5, 15); // 修改为传入两个参数
TestEx1 tEx2 = new TestEx1(10, 100);
tEx1.test3(); // 修改为调用test3方法
TestEx1.test1(10.0f); // 修改为调用正确的方法
TestEx1.test2();
}
}
```
错误原因:
1. 缺少构造函数的无参版本,导致在main方法中创建TestEx1对象时出错。
2. 方法test1()重载了两次,但是参数列表完全相同,无法区分调用哪个方法。
3. 方法test1()的返回值类型为void,无法使用return语句返回值。
修改方式:
1. 添加构造函数TestEx1(int a, int b)。
2. 修改方法test1()的参数列表,使其可以区分调用不同的重载方法。
3. 修改方法test1()的返回值类型为int,或者添加新的方法test3(),用于输出a的值。
4. 修改main方法中创建TestEx1对象的方式,传入正确的参数。
5. 修改调用test1()方法的参数,使其调用正确的方法。
阅读全文