Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where to put Scanner class

As a new student to Java I have bean practicing writing methods and then calling them from a different class. I would like to know how to have the radius determined by user input. I understand I need to use the Scanner class but I'm not sure which class to import the Scanner in and where to put the following bit of code.

Scanner userInput = new Scanner(System.in);
System.out.println("Please enter radius");
int radius = userInput.nextInt();

FIRST FILE - My Methods

package circle;

public class Circle {
  private double radius;
  final double pi;

  public Circle(double radiusIn, double piIn) {
    radius = radiusIn;
    pi = piIn;
  }

  public double getRadius() {
    return radius;
  }

  public double calculateDiameter() {
    return radius + radius;
  }

  public double calculateCircumference() {
    return 2 * pi * radius;
  }

  public double calculateArea() {
    return pi * radius * radius;
  }
}

SECOND FILE

package circle;

public class CircleTest {
  public static void main(String[] args) {
    Circle myCircle;
    myCircle = new Circle(3, 3.14159);
    System.out.println("Circle radius is " + myCircle.getRadius());
    System.out.println("Circle diameter is " + myCircle.calculateDiameter());
    System.out.println("Circle circumference is "
        + myCircle.calculateCircumference());
    System.out.println("Circle area is " + myCircle.calculateArea());
  }
}
like image 672
GGstudent Avatar asked Mar 07 '26 03:03

GGstudent


1 Answers

Typically you declare variables where you need them in this case that means in the main method where the rest of the user interaction takes place.

package circle;

public class CircleTest {
  public static void main(String[] args) {
    Circle myCircle;

    Scanner userInput = new Scanner(System.in);
    System.out.println("Please enter radius");
    int radius = userInput.nextInt();

    myCircle = new Circle(radius);
    System.out.println("Circle radius is " + myCircle.getRadius());
    System.out.println("Circle diameter is " + myCircle.calculateDiameter());
    System.out.println("Circle circumference is "
        + myCircle.calculateCircumference());
    System.out.println("Circle area is " + myCircle.calculateArea());
  }
}

Also Math.PI is a much more accurate approximation of pi. Use that instead of relying on the user to pass in the correct value:

package circle;

public class Circle {
  private double radius;


  public Circle(double radiusIn) {
    radius = radiusIn;
  }

  public double getRadius() {
    return radius;
  }

  public double calculateDiameter() {
    return radius + radius;
  }

  public double calculateCircumference() {
    return 2 * Math.PI * radius;
  }

  public double calculateArea() {
    return Math.PI * radius * radius;
  }
}
like image 149
ratchet freak Avatar answered Mar 09 '26 15:03

ratchet freak