Java 使用抽象类返回用户输入时出现问题
我应该得到用户输入的三角形颜色和三角形的宽度和高度,但我甚至不能显示输出。任何提示或指点都将不胜感激,因为我现在正在学校学习抽象课程。多谢各位 三角形类:Java 使用抽象类返回用户输入时出现问题,java,Java,我应该得到用户输入的三角形颜色和三角形的宽度和高度,但我甚至不能显示输出。任何提示或指点都将不胜感激,因为我现在正在学校学习抽象课程。多谢各位 三角形类: import java.util.Scanner; public class Triangle extends GeometricObject { private double base; private double height; private int color; public Triangle() { } public s
import java.util.Scanner;
public class Triangle extends GeometricObject {
private double base;
private double height;
private int color;
public Triangle() {
}
public static void main(String[] args) {
System.out.println("Enter a width for triangle:");
double base = Integer.parseInt(input.nextInt());
System.out.println("Enter height for triangle:");
double height = Integer.parseInt(input.nextInt());
}
public Triangle(double base, double height) {
this.base = base;
this.height = height;
this.color = color;
}
public double getBase() {
return base;
}
public void setWidth(double width) {
this.base = base;
}
public double getHeight() {
return height;
}
public int getColor(){
return color;
}
public void setHeight(double height) {
this.height = height;
}
public void setColor(int color){
this.color = color;
}
@Override
public double getArea() {
return 0.5* base * height;
}
@Override
public double getPerimeter() {
return 2 * (base + height);
}
}
以下是几何类:
public abstract class GeometricObject {
private String color = "white";
private boolean filled;
private java.util.Date dateCreated;
/** Construct a default geometric object */
protected GeometricObject() {
dateCreated = new java.util.Date();
}
/** Construct a geometric object with color and filled value */
protected GeometricObject(String color, boolean filled) {
dateCreated = new java.util.Date();
this.color = color;
this.filled = filled;
}
/** Set a new color */
public void setColor(String color) {
this.color = color;
}
public boolean isFilled() {
return filled;
}
/** Set a new filled */
public void setFilled(boolean filled) {
this.filled = filled;
}
/** Get dateCreated */
public java.util.Date getDateCreated() {
return dateCreated;
}
@Override
public String toString() {
return "created on " + dateCreated + "\ncolor: " + color +
" and filled: " + filled;
}
/** Abstract method getArea */
public abstract double getArea();
/** Abstract method getPerimeter */
public abstract double getPerimeter();
}
什么是
输入
?在哪里申报
您应该使扫描仪对象指向System.in。通过这种方式,您可以要求用户输入
Scanner sc = new Scanner(System.in);
while (sc.hasNext() ) {
System.out.println('Enter color');
int color = Integer.parseInt(sc.nextLine());
}
您的代码有很多缺陷: 1)
扫描仪输入=新扫描仪(System.in)代码>丢失。您一定遇到了编译错误
2) Integer.parseInt
接受String
参数
3) 为什么要将int
赋值给double
。而是使用Double.parseDouble
4) 您的构造函数三角形(双基,双高)
有两个参数,您仍然在编写this.color=color代码>。为什么?
5) int颜色代码>为什么颜色是int
?应该是字符串
6) 父类上存在color
。那你为什么要在儿童课上再加一个呢
必须遵循这些要点
我做了一些基本的改变,剩下的你自己试试。以下是修改后的代码:
public class Triangle extends GeometricObject {
private double base;
private double height;
private int color;
public Triangle() {
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter a width for triangle:");
double base = Double.parseDouble("" + input.nextInt());
System.out.println("Enter height for triangle:");
double height = Double.parseDouble("" + input.nextInt());
GeometricObject triangle = new Triangle(base, height);
System.out.println("Area of triangle " + triangle.getArea());
System.out.println("Perimeter of triangle " + triangle.getPerimeter());
}
public Triangle(double base, double height) {
this.base = base;
this.height = height;
}
public double getBase() {
return base;
}
public void setWidth(double width) {
this.base = base;
}
public double getHeight() {
return height;
}
public int getColor() {
return color;
}
public void setHeight(double height) {
this.height = height;
}
public void setColor(int color) {
this.color = color;
}
@Override
public double getArea() {
return 0.5 * base * height;
}
@Override
public double getPerimeter() {
return 2 * (base + height);
}
}
你必须通过阅读上面的代码来探索自己。比如我为什么使用下面的选项:
GeometricObject triangle = new Triangle(base, height);