Java 初学者-从另一个类中打开一个方法

Java 初学者-从另一个类中打开一个方法,java,class,methods,Java,Class,Methods,我有点困惑 我有两个java文件,一个是ApplicationXXX.java(Main),另一个是readInput.java。现在,我的目标是在主类中从readInput执行该方法。我知道这样一个例子: readInput read = new readInput(); 有了它,我只能访问方法的值,但方法也包括输入字段,我将从readInput中缩短内容,因为它包括很多合理性检查。第一次我只想打开方法来读取值,而不返回任何变量。我还在ApplicationXXX.java中导入包 pack

我有点困惑

我有两个java文件,一个是ApplicationXXX.java(Main),另一个是readInput.java。现在,我的目标是在主类中从readInput执行该方法。我知道这样一个例子:

readInput read = new readInput();
有了它,我只能访问方法的值,但方法也包括输入字段,我将从readInput中缩短内容,因为它包括很多合理性检查。第一次我只想打开方法来读取值,而不返回任何变量。我还在ApplicationXXX.java中导入包

package application.test;

import java.io.bufferedeader;

    public class readInput {

    public String var1;
    public String var2;

    public readInput();

    BufferedReader input = new BufferedReader(new InputStreamReader(
    System.in));

    System.out.println("Enter Var 1:");
    this.var1 = input.readLine();

    System.out.println("Enter Var 2:");
    this.var2 = input.readLine();

    }
    }
如果有人能帮我,那就太好了。
当你需要更多的信息时,只需发表评论即可

此处未声明任何方法,以下块应位于方法或构造函数中:

BufferedReader input = new BufferedReader(new InputStreamReader(
System.in));

System.out.println("Enter Var 1:");
this.var1 = input.readLine();

System.out.println("Enter Var 2:");
this.var2 = input.readLine();
我怀疑你想在构造器中使用这个块,然后你应该使用这个行

public readInput();


作为旁注,在java中,类应该以大写字母开头(强约定),因此类(和构造函数)应该重命名为
ReadInput

您还应该重新考虑类的名称(它不应该是动词),工作可能应该在方法中完成,而不是在构造函数中

编辑:以下是一些小的重构建议:

public class InputReader { //not a verb, upper case

   public String var1;
   public String var2;

   // removed the default constructor, there is no need for it
   public void readInput() { //this is a method! not constructor!

      BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

      System.out.println("Enter Var 1:");
      this.var1 = input.readLine();

      System.out.println("Enter Var 2:");
      this.var2 = input.readLine();

   }
} 

您没有在此处声明任何方法,以下块应位于方法或构造函数中:

BufferedReader input = new BufferedReader(new InputStreamReader(
System.in));

System.out.println("Enter Var 1:");
this.var1 = input.readLine();

System.out.println("Enter Var 2:");
this.var2 = input.readLine();
我怀疑你想在构造器中使用这个块,然后你应该使用这个行

public readInput();


作为旁注,在java中,类应该以大写字母开头(强约定),因此类(和构造函数)应该重命名为
ReadInput

您还应该重新考虑类的名称(它不应该是动词),工作可能应该在方法中完成,而不是在构造函数中

编辑:以下是一些小的重构建议:

public class InputReader { //not a verb, upper case

   public String var1;
   public String var2;

   // removed the default constructor, there is no need for it
   public void readInput() { //this is a method! not constructor!

      BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

      System.out.println("Enter Var 1:");
      this.var1 = input.readLine();

      System.out.println("Enter Var 2:");
      this.var2 = input.readLine();

   }
} 

创建一个新的方法函数作为只读值如何?例如getter方法。看起来您对面向对象编程不是很熟悉。也许你想先做一些Java教程。@Thomas我想学习它,所以我要测试它。创建一个新的方法函数,只读取值,怎么样?例如getter方法。看起来您对面向对象编程不是很熟悉。也许你想先做一些Java教程。@Thomas我想学,所以我要测试一下。谢谢。但我不明白你的上一个代码,它看起来和我的代码一样。如果您能让我更清楚地了解这一点,那就太好了。@CallMeBronxy请注意,我正在为该方法打开一个块,并在您想要运行的块之后关闭它。谢谢。现在我明白了。我真的认为readInput()是我第一个源代码中的一个方法:pSo还有一个问题,代码是否“正确”面向对象编程?@CallMeBronxy更好的是,
系统仍然存在一些问题。例如,在
中-硬编码,而不是作为参数传递给构造函数。谢谢。但我不明白你的上一个代码,它看起来和我的代码一样。如果您能让我更清楚地了解这一点,那就太好了。@CallMeBronxy请注意,我正在为该方法打开一个块,并在您想要运行的块之后关闭它。谢谢。现在我明白了。我真的认为readInput()是我第一个源代码中的一个方法:pSo还有一个问题,代码是否“正确”面向对象编程?@CallMeBronxy更好的是,
系统仍然存在一些问题。例如,在
中,硬编码而不是作为参数传递给构造函数。