Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用抽象类返回用户输入时出现问题_Java - Fatal编程技术网

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);