如何接收用户输入并将其传递给对象?

时间:2017-11-08 16:22:44

标签: java object java.util.scanner

我有一个java程序,它将接收用户输入并传递一个对象来查找圆的区域。

import java.util.Scanner; 
public class Area{

    public static void main(String[] args) {
        // TODO Auto-generated method stub
         Scanner reader = new Scanner(System.in);
System.out.println("Enter a number: ");
double n = reader.nextDouble(); 
   reader.close(); 
          Circle c = new Circle();
          c.radius = n;
          c.area=3.148*c.radius*c.radius;
          System.out.println(c.radius);

    }
}
class Circle {
        double radius;
       double area;

}

程序接收用户输入但它没有执行操作。 如何使这项工作

此致

3 个答案:

答案 0 :(得分:1)

System.out.println(c.area);

那应该解决你的问题。

虽然,如果我可以建议,你最好在Circle课程中进行这些计算。这是很好的编码实践。

public class Main {
   public static void main(String[] args) {
   System.out.println("Enter a number: ");
   Scanner reader = new Scanner(System.in);
   double n = reader.nextDouble();
   reader.close();
   Circle circle = new Circle(n);
   double area = circle.getArea();
   System.out.printf("The area is %f", area);
   }
}

class Circle {
    private double radius;
    public Circle(double radius) {
       this.radius = radius;
    }
    public double getArea() {
       return 3.14 * radius * radius;
    }
    public double getRadius() {
       return radius;
    }
 }

答案 1 :(得分:1)

请查看此示例实现:

class Circle {

    private static final double PI = 3.148;

    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

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

    public double getRadius() {
        return radius;
    }
}

public class Main {

    public static void main(String[] args) {
        System.out.println("Enter a number: ");

        Scanner reader = new Scanner(System.in);
        double input = reader.nextDouble();
        reader.close();

        Circle circle = new Circle(input);
        double area = circle.calculateArea();
        System.out.printf("My radius is %f%n", circle.getRadius());
        System.out.printf("My area is %f", area);
    }
}
  • 您最初的错误是您正在打印c.radius而不是c.area
  • 构造函数public Circle(double radius)确保Circle对象在创建一个对象时始终具有半径。没有半径的圆圈确实没有意义。
  • Circle应对与圈子相关的所有内容负责。这就是为什么区域的计算,一个典型的与圆相关的数学运算,应该由Circle处理,而不是在main()之外处理。

答案 2 :(得分:1)

该操作表现良好,但您只是没有将正确的参数传递给System.out.println。最后,您传递c.radius而不是c.area,并且操作结果不会写入控制台。这是你应该在最后的主要方法上写的:

System.out.println(c.area)