下面代码定义了一个日期类及其测试类,结合注释,请找出其中的7处错误。 public class Date { private int year, month, day; public void Date(int y,int m,int d) { //定义有参构造方法 year=y; month=m; day=d; } public Date(){ //定义无参构造方法 Date(2018,6,15); } public void setMonth(int month) {//给成员变量month赋值 month=month; } public int getMonth(){ returm month; } public void print(){ System.out.println("date is "+ this.year+"-"+this.month+"-"+this.day); } public void main(String args[]){ Date oday = new Date(2018,7); print(); } }
时间: 2024-05-02 12:17:09 浏览: 14
错误1:构造方法不能有返回类型,应该将 `public void Date(int y,int m,int d)` 修改为 `public Date(int y,int m,int d)`
错误2:在无参构造方法中应该使用 this 调用有参构造方法,应该将 `Date(2018,6,15);` 修改为 `this(2018,6,15);`
错误3:setMonth 方法中应该使用 this.month 赋值,应该将 `month=month;` 修改为 `this.month=month;`
错误4:getMonth 方法中应该是 return 而非 returm,应该将 `returm month;` 修改为 `return month;`
错误5:print 方法中应该使用实例变量,应该将 `this.year` 修改为 `year`
错误6:main 方法应该是静态方法,应该将 `public void main(String args[])` 修改为 `public static void main(String args[])`
错误7:在 main 方法中应该使用实例对象调用 print 方法,应该将 `print();` 修改为 `oday.print();`
相关问题
下面代码定义了一个日期类及其测试类,结合注释,请找出其中的7处错误。 public class Date { private int year, month, day; public void Date(int y,int m,int d) { //定义有参构造方法 year=y; month=m; day=d; } public Date(){ //定义无参构造方法 Date(2018,6,15); } public void setMonth(int month) {//给成员变量month赋值 month=month; } public int getMonth(){ returm month; } public void print(){ System.out.println("date is "+ this.year+"-"+this.month+"-"+this.day); } public void main(String args[]){ Date oday = new Date(2018,7); print(); } }
1. 构造方法名应该与类名相同,因此构造方法`void Date(int y,int m,int d)`应该改为`public Date(int y,int m,int d)`
2. 无参构造方法中应该使用`this(2018,6,15)`调用有参构造方法,而不是`Date(2018,6,15)`
3. setMonth方法中形参名应该与成员变量名不同,因此`month=month`应该改为`this.month=month`
4. getMonth方法名拼写错误,应该为`return`而不是`returm`
5. main方法应该是静态的才能被JVM调用,因此应该加上`public static`
6. main方法中创建对象时应该使用`new Date(2018,6,15)`而不是`new Date(2018,7)`
7. main方法中调用print方法时应该使用对象`oday.print()`而不是`print()`
java用mvc写一个一元二次方程,要有测试类,并给代码注释一下
好的,以下是一个使用MVC模式实现一元二次方程的Java代码,包括一个测试类和注释:
Model(模型):
```java
public class QuadraticEquation {
private double a;
private double b;
private double c;
private double discriminant;
private double root1;
private double root2;
public QuadraticEquation(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
this.discriminant = b * b - 4 * a * c;
if (discriminant >= 0) {
this.root1 = (-b + Math.sqrt(discriminant)) / (2 * a);
this.root2 = (-b - Math.sqrt(discriminant)) / (2 * a);
}
}
public double getA() {
return a;
}
public double getB() {
return b;
}
public double getC() {
return c;
}
public double getDiscriminant() {
return discriminant;
}
public double getRoot1() {
return root1;
}
public double getRoot2() {
return root2;
}
}
```
View(视图):
```java
import java.util.Scanner;
public class QuadraticEquationView {
private Scanner scanner;
public QuadraticEquationView() {
scanner = new Scanner(System.in);
}
public double[] getInput() {
System.out.println("请输入一元二次方程的系数(a、b、c):");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
return new double[]{a, b, c};
}
public void printResult(double[] roots, double discriminant) {
if (discriminant > 0) {
System.out.println("该一元二次方程有两个实数根:");
System.out.printf("x1 = %.2f, x2 = %.2f\n", roots[0], roots[1]);
} else if (discriminant == 0) {
System.out.println("该一元二次方程有一个实数根:");
System.out.printf("x1 = x2 = %.2f\n", roots[0]);
} else {
System.out.println("该一元二次方程没有实数根,但有两个虚数根:");
System.out.printf("x1 = %.2f + %.2fi, x2 = %.2f - %.2fi\n", roots[0], Math.sqrt(-discriminant), roots[1], Math.sqrt(-discriminant));
}
}
}
```
Controller(控制器):
```java
public class QuadraticEquationController {
private QuadraticEquation model;
private QuadraticEquationView view;
public QuadraticEquationController(QuadraticEquation model, QuadraticEquationView view) {
this.model = model;
this.view = view;
}
public void run() {
double[] input = view.getInput();
model = new QuadraticEquation(input[0], input[1], input[2]);
double[] roots = new double[]{model.getRoot1(), model.getRoot2()};
double discriminant = model.getDiscriminant();
view.printResult(roots, discriminant);
}
}
```
Main(主函数):
```java
public class Main {
public static void main(String[] args) {
QuadraticEquation model = new QuadraticEquation(0, 0, 0);
QuadraticEquationView view = new QuadraticEquationView();
QuadraticEquationController controller = new QuadraticEquationController(model, view);
controller.run();
}
}
```
Test(测试类):
```java
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class QuadraticEquationTest {
@Test
public void testQuadraticEquation() {
QuadraticEquation qe = new QuadraticEquation(1, -5, 6);
assertEquals(2.0, qe.getRoot1(), 0.001);
assertEquals(3.0, qe.getRoot2(), 0.001);
assertEquals(1.0, qe.getDiscriminant(), 0.001);
qe = new QuadraticEquation(1, -2, 1);
assertEquals(1.0, qe.getRoot1(), 0.001);
assertEquals(1.0, qe.getRoot2(), 0.001);
assertEquals(0.0, qe.getDiscriminant(), 0.001);
qe = new QuadraticEquation(2, 3, 4);
assertEquals(0.0, qe.getRoot1(), 0.001);
assertEquals(0.0, qe.getRoot2(), 0.001);
assertEquals(-23.0, qe.getDiscriminant(), 0.001);
}
}
```
注释:
1. 在 Model 中,我们定义了一个 QuadraticEquation 类,用于计算一元二次方程的根和判别式。
2. 在 View 中,我们定义了一个 QuadraticEquationView 类,用于从用户那里获取输入,并将结果输出到控制台。
3. 在 Controller 中,我们定义了一个 QuadraticEquationController 类,用于协调 Model 和 View 之间的交互。
4. 在 Main 中,我们创建了 Model、View 和 Controller 的实例,并调用 Controller 的 run() 方法来运行应用程序。
5. 在 Test 中,我们使用 JUnit 框架编写了一个测试类,用于测试 QuadraticEquation 类的方法是否正确。
使用 MVC 模式可以将应用程序分成三个部分,使得代码更加清晰、易于维护和扩展。