public class Main{ public static void main (String args[]){ Oval.Oval(double a,double b); Shape s=new Oval(a,b); System.out.println("The area of "+s.toString()+" is "+s.area()); System.out.println("The perimeterof "+s.toString()+" is "+s.perimeter()); }}找错误
时间: 2023-11-27 16:50:39 浏览: 37
在这段代码中,有一个错误:
```
Oval.Oval(double a,double b);
```
这不是调用Oval类的构造函数的正确方式。应该使用以下方式:
```
Oval oval = new Oval(a, b);
```
改正后的代码如下:
```
public class Main {
public static void main(String[] args) {
double a = 2.0;
double b = 3.0;
Oval oval = new Oval(a, b);
Shape s = oval;
System.out.println("The area of " + s.toString() + " is " + s.area());
System.out.println("The perimeter of " + s.toString() + " is " + s.perimeter());
}
}
```
注意,还需要将Oval对象赋值给Shape类型的变量s,这样才能使用Shape类中的方法。
相关问题
public static void main(String ... s)和public static void main(String[] args)的区别
这两个方法的本质是一样的,都是Java程序的入口方法,用于启动程序。
但是,它们的写法略有不同:
- `public static void main(String ... s)`使用了可变参数(Varargs)的写法,可以传入任意数量的字符串参数。
- `public static void main(String[] args)`则采用了传统的数组写法,要求传入一个字符串数组。
除此之外,两者没有任何区别,都可以被JVM识别为程序的入口方法。
代码错误import java.util.Scanner; public class Main{ public static void main (String args[]){ Scanner sc=new Scanner(System.in); double a=sc.nextDouble(); double b=sc.nextDouble(); Shape s=new Oval(a,b); System.out.println("The area of "+s.toString()+" is "+s.area()); System.out.println("The perimeterof "+s.toString()+" is "+s.perimeter()); }} class Shape{ abstract double area(); abstract double perimeter(); } class Oval extends Shape{ private double a; //长轴半径 private double b; //短轴半径 Oval(double a,double b){ this.a= a; this.b= b; } Oval(){ this.a=0; this.b=0; } double area(){ return Math.PI*a*b; } double perimeter(){ return 2*Math.PI*b+4*(a-b); //L=2πb+4(a-b) } public String toString() { return "Oval(a:" + this.a + ",b:" + this.b + ")"; } }
这段代码有一个错误,因为抽象类 Shape 中的方法没有被声明为抽象方法。在 Java 中,如果一个类有抽象方法,那么这个类必须被声明为抽象类。因此,你需要在 Shape 类中将 area() 和 perimeter() 方法声明为抽象方法,如下所示:
```
abstract class Shape {
abstract double area();
abstract double perimeter();
}
```
另外,你还需要将 Oval 类的构造函数声明为 public,否则在其他类中无法访问该构造函数。
修复后的代码如下:
```
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
double a = sc.nextDouble();
double b = sc.nextDouble();
Shape s = new Oval(a, b);
System.out.println("The area of " + s.toString() + " is " + s.area());
System.out.println("The perimeter of " + s.toString() + " is " + s.perimeter());
}
}
abstract class Shape {
abstract double area();
abstract double perimeter();
}
class Oval extends Shape {
private double a; //长轴半径
private double b; //短轴半径
public Oval(double a, double b) {
this.a = a;
this.b = b;
}
public Oval() {
this.a = 0;
this.b = 0;
}
@Override
double area() {
return Math.PI * a * b;
}
@Override
double perimeter() {
return 2 * Math.PI * b + 4 * (a - b); //L=2πb+4(a-b)
}
public String toString() {
return "Oval(a:" + this.a + ",b:" + this.b + ")";
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)