作为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());
}
}
答案 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。