在哪里放置Scanner类

时间:2014-05-23 12:11:21

标签: java java.util.scanner

作为Java的新生,我有bean练习编写方法,然后从不同的类中调用它们。我想知道如何通过用户输入确定半径。我知道我需要使用Scanner类,但我不确定导入Scanner的哪个类以及在哪里放置以下代码。

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

第一个文件 - 我的方法

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

第二个文件

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

5 个答案:

答案 0 :(得分:2)

通常,在这种情况下,您需要在需要它们的地方声明变量,这意味着在主方法中进行其余的用户交互。

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

Math.PI也是pi的更准确的近似值。使用它而不是依靠用户传递正确的值:

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

答案 1 :(得分:1)

Object视为对象,例如苹果或牙刷。

class Circle是对象的定义;这是一个试图匹配现实的描述。预定义的Java Object就像你在现实中找到的任何东西,你不能在一个对象(在现实世界中)上调用eat(),因为它可能是一个苹果,但它可能是一个牙刷(或圆圈)。

因此,将代码放在有意义的地方,好像它是一个真实世界的对象。您想要检索用户输入。圈子知道如何阅读用户输入吗? 否!

您致电其他班级CircleTest。但真正的是CircleCreationApplication;这可能是一个更好的名称。在创建圈子的应用程序中,您将收到用户输入。这就是代码可以去的地方。获得用户输入后,您可以使用它来创建圆圈。

package circle;

public class CircleCreationApplication {
  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, 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());

    userInput.close();
  }
}

注意:@ ratchetfreak的答案还有其他一些好处。请同时阅读

答案 2 :(得分:0)

我认为用户交互代码会进入主类。这是您处理工作流程的地方,具体取决于用户输入。您真正想要的是删除硬编码半径(3)并使用Scanner从用户读取值,对吗?

然后,在实例化main对象之前,您的代码段将使用Circle方法。

答案 3 :(得分:0)

public static void main(String [] args)            
{         
    Scanner userInput = new Scanner(System.in);
    System.out.println("Please enter radius");
    int radius = userInput.nextInt();
    Circle myCircle;
    myCircle = new Circle(radius, 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());
}

答案 4 :(得分:-1)

您可能需要导入扫描仪并将代码添加到第二个文件中。然后,您可以使用radius作为Circle构造函数的参数,而不仅仅是3。