I am implementing a program which calculate the area and perimeter of a circle and a rectangle. The radius (of circle), width, height (of rectangle) get from user. The problem is: after I type in the radius parameter, the console pop out the message:
Exception in thread "main" java.util.NoSuchElementException at...
Main.java is located in main package, Circle.java and Rectangle.java are located in shapes package.
Main.java:
package main;
import shapes.Circle;
import shapes.Rectangle;
//import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Circle cir = new Circle();
Rectangle rec = new Rectangle();
cir.printArea();
cir.printPerimeter();
rec.printArea();
rec.printPerimeter();
}
}
Circle.java:
package shapes;
import java.util.Scanner;
public class Circle {
final double PI = 3.14;
double radius;
double area, perimeter;
public Circle(double radius) {
this.radius = radius;
area = PI*radius*radius;
perimeter = 2*PI*radius;
}
public Circle() {
System.out.print("radius = ");
Scanner scan = new Scanner(System.in);
radius = scan.nextDouble();
scan.close();
area = PI*radius*radius;
perimeter = 2*PI*radius;
}
public void printArea() {
System.out.println("Area of circle = " + area);
}
public void printPerimeter() {
System.out.println("Perimeter of circle = " + perimeter);
}
}
Rectangle.java:
package shapes;
import java.util.Scanner;
public class Rectangle {
public double length, width;
double area, perimeter;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
area = length * width;
perimeter = (length + width) * 2;
}
public Rectangle() {
Scanner scan = new Scanner(System.in);
System.out.print("width = ");
width = scan.nextDouble();
System.out.print("length = ");
length = scan.nextDouble();
scan.close();
area = length * width;
perimeter = (length + width) * 2;
}
public void printArea() {
System.out.println("Area of rectangle = " + area);
}
public void printPerimeter() {
System.out.println("Perimeter of rectangle = " + perimeter);
}
}
Why does this happen and how to fix it?