【问题标题】:Where to put methods scanner concretely(Java)具体在哪里放置方法扫描器(Java)
【发布时间】:2014-12-13 21:54:45
【问题描述】:

所以我的问题很简短,我有一个 java 构造函数,以及一个必须使用构造函数来构建对象的 java 类。我需要向用户询问构建对象所需的参数。通常,做我将所需的扫描器(以使用户输入参数)放在正确的构造函数方法中,或者我直接在使用构造函数的类方法中询问这些?例如,具有 construc.java(至于构造函数)并包含以下方法:¸

public void setNumber(int JNumber){
    if(JNumber>=0){
    Number = JNumber;

还有一个名为 caller.java 的文件,其中包含以下方法:

public void add();
construc test = new construc(string,int,int,string,string);  //instance to use the constructor methods

所以基本上我想知道将这个要求分配对象的数字的代码部分放在哪里:

    Scanner thenum = new Scanner(System.in);
    System.out.print("Entrez la quantité: \n");
    int ob1num = thenum.nextInt();
    ob1num = JNumber;
    setNumber(JNumber);

我对Java(和初学者)有点困惑。谢谢!

【问题讨论】:

  • 通常你应该在类方法而不是构造函数中请求值。构造函数用于对象初始化。
  • 基本构造初始化空变量,然后用用户输入填充变量?
  • 也许是我的智障,但我不明白你的意思。“读取并直接传递给带有值的构造。”你能用我的代码证明这一点吗?谢谢¸

标签: java methods constructor java.util.scanner getter-setter


【解决方案1】:

这取决于您想如何使用setNumber() 方法。如果您还想使用它来设置不基于用户输入的数字,建议将Scanner 放在方法之外。就我个人而言,我会在方法之外使用Scanner,这将使该方法更加通用。如果您需要扫描多个号码,可以将扫描部分放在自己的方法中,该方法根据用户输入返回int

class YourClass {
    YourClass() {
        //Initialize
        setNumber();
    }
}

public static main(String[] args) {
    //Create new YourClass object and set value from user input
    YourClass object = new YourClass();
}

【讨论】:

  • 数字将始终基于用户输入,并且只有1个数字。
  • 在这种情况下,我会使用 setNumber() 方法,该方法向用户请求一个数字,然后一次性设置它。
  • so... setNumber() 实际上是在构造函数类中。所以我把输入放在构造函数中?
  • 我更愿意在构造函数中调用setNumber(),因为您要确保在继续之前设置了号码。
  • 所以基本上你的意思是在 public void setNumber(int JNumber){ if(JNumber>=0){ Number = JNumber;(wich is part of constructor)中调用 add()
【解决方案2】:

MyClass 中提供了 getter 和 setter 方法。您的主类方法可以读取值

 Scanner thenum = new Scanner(System.in);
 System.out.print("Entrez la quantité: \n");
 int ob1num = thenum.nextInt();

并将值传递给构造函数

  MyClass(int JNumber,String JString){
    this.JNumber = JNumber;
    this.JString = JString;
 }

【讨论】:

  • MyClass 代表类“调用/使用”构造函数还是构造函数本身的方法?(在这种情况下,构造函数方法是setNumber)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-12
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多