首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你能在公共课程之外使用扫描仪吗?相对于公共类,您将把单独的类放在哪里?

你能在公共课程之外使用扫描仪吗?相对于公共类,您将把单独的类放在哪里?
EN

Stack Overflow用户
提问于 2017-08-18 18:34:55
回答 4查看 3.1K关注 0票数 3

我正致力于在面向对象编程的程序中使用单独的类。警告:我在OOP很讨厌,所以如果我的问题是愚蠢和荒谬的,请告诉我,或者,如果你知道我的意思,编辑我的帖子。

  1. 您会在单独的.java文件或相同的*中创建单独的类和程序本身吗?

*相同,如

代码语言:javascript
复制
public class filename
{
// ... content
}

class name
{

}
  1. 您可以在单独的类中使用Scanner,还是应该在main()方法中使用它?如果是这样的话,是怎么做的?
  2. 假设必须在main()方法中使用Scanner,然后声明一个新的变量输入并将其初始化为Scanner输入。您将如何将其设置为单独类中的一个变量?你能做个新的东西然后做..。

示例:

代码语言:javascript
复制
public class TestSimpleCircle {
    public static void main(String[] args {
    SimpleCircle circle1 = new SimpleCircle();
    System.out.println("The area of the circle of radius " + circle1.radius + " is "  + circle1.getArea());

    // Create a circle with radius 25
    SimpleCircle circle2 = new SimpleCircle(25);        System.out.println("The area of the circle of radius " + circle2.radius + " is " + circle2.getArea());

    // Create a circle with radius 125
    SimpleCircle circle3 = new SimpleCircle(125);       System.out.println("The area of the circle of radius " + circle3.radius + " is " + circle3.getArea());

    // Modify circle radius
    circle2.radius = 100; // or circle2.setRadius(100)  System.out.println("The area of the circle of radius " + circle2.radius + " is " + circle2.getArea());

    }
}

class SimpleCircle {
    double radius;

    SimpleCircle() {
        radius = 1;
    }

    SimpleCircle(double newRadius) {
        radius = newRadius;
    }

    double getArea() {
        return radius * radius * Math.PI;
    }

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

    void setRadius(double newRadius) {
        radius = newRadius;
    }
}

...that (例如圆环1.getArea())?

  1. 在单独的类中创建变量时,它们是否以任何方式连接到main()方法或不同类中同名的变量?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-08-18 18:56:42

您会在单独的.java文件或相同的*中创建单独的类和程序本身吗?

Every class in Java should be in its own file,但是可以在一个文件中创建多个类。例如

代码语言:javascript
复制
class A{
    public A(){
        System.out.println("A created");
    }
}

public class Main {
    public static void main(String[] args) {
        A x = new A();
    }
}

您可以在单独的类中使用Scanner,还是应该在main()方法中使用它?如果是这样的话,是怎么做的?

取决于你的申请。很多人更喜欢组织和分离,所以最好的建议是在自己的类中做到这一点。但是对于非常简单的示例和应用程序,我只是将其抛到main()方法中,或者如果我只在任何方法中使用一次的话。扫描器本身就是类,所以如果您只创建另一个类来单独包装它,那么它实际上根本不值得。

您可以创建Scanner作为任何类的成员变量,并使用它如果有一些方法您将使用它。

这些只是一些想法,完全取决于您的设计、应用行为和个人推荐。

至于怎么做,下面是一个例子

代码语言:javascript
复制
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a number");
        int number = sc.nextInt();
        System.out.println("You entered number " + number);
    }
}

假设必须在main()方法中使用Scanner,然后声明一个新的变量输入并将其初始化为Scanner输入。您将如何将其设置为单独类中的一个变量?你能做个新的东西然后做..。

是的,我将创建该类的新对象,并使用输入值初始化其成员。或者,我将扫描器放入类中,以询问使用构造函数创建的每个不带参数的对象的半径。有许多不同的方法,它们中的任何一个都没有对错。尽量避免重复和依赖。

下面是用示例编辑的代码,以便

代码语言:javascript
复制
import java.util.Scanner;

public class TestSimpleCircle {
    public static void main(String[] args) {

        System.out.println("Enter radius of your choice please");
        Scanner sc = new Scanner(System.in);

        SimpleCircle circle1 = new SimpleCircle(sc.nextInt()); // taking the radius as input

        System.out.println("The area of the circle of radius " + circle1.radius + " is " + circle1.getArea());

        // Create a circle with radius 25
        SimpleCircle circle2 = new SimpleCircle(25);
        System.out.println("The area of the circle of radius " + circle2.radius + " is " + circle2.getArea());

        // Create a circle with radius 125
        SimpleCircle circle3 = new SimpleCircle(125);
        System.out.println("The area of the circle of radius " + circle3.radius + " is " + circle3.getArea());

        // Modify circle radius
        circle2.radius = 100;
        System.out.println("The area of the circle of radius " + circle2.radius + " is " + circle2.getArea());

    }
}

class SimpleCircle {
    double radius;

    SimpleCircle() {
        radius = 1;
    }

    SimpleCircle(double newRadius) {
        radius = newRadius;
    }

    double getArea() {
        return radius * radius * Math.PI;
    }

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

    void setRadius(double newRadius) {
        radius = newRadius;
    }
}
票数 3
EN

Stack Overflow用户

发布于 2017-08-18 18:53:08

扫描仪就像任何其他对象一样,可以通过引用传递到另一个方法/类中,并且仍然可以使用。

还可以创建和使用扫描仪类的不同实例。

你会在你需要它的任何类中使用扫描仪。如果创建对象的新实例,它将不会与其他实例连接。这个问题并不是针对Scanner的,而是一般的java对象。

票数 1
EN

Stack Overflow用户

发布于 2017-08-18 19:12:34

第一个问题。是的,您可以在同一个java文件中创建不同的类,在编译java文件之后,将为您定义的每个类创建单独的.class文件。

我想提到的是,如果任何类被声明为公共类(如上面示例中的it.but公共类文件名),您可以按任何名称保存java文件,然后编译java文件,那么java文件的名称应该与公共类的名称相同。

如果不做,so.You会收到编译时错误的信息:类文件名是公共的,应该在名为文件名的文件中声明。

希望这能帮你一点..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45763037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档