【问题标题】:How do you pass variables to different methods如何将变量传递给不同的方法
【发布时间】:2019-10-12 13:19:01
【问题描述】:

如何将 tom.name、id age 和 year 变量从 main 方法传递到 'tomdetails' 方法中,以便该方法可以识别它们?

class Student {
    int id;
    int age;
    int year;
    String name;
}

class Staff {
    int id;
    int age;
    String name;
    String postcode;
    String department;
}

public class Main {

    public static void main(String[] args) {
        //Database
        //Students
        Student tom = new Student();
        tom.name = "Tom";
        tom.id = 1;
        tom.age = 15;
        tom.year = 10;

       }

    private static void tom_details() {
        System.out.println(tom.name);
        System.out.println(tom.id);
        System.out.println(tom.age);
        System.out.println(tom.year);
    }
}

【问题讨论】:

  • 我建议阅读有关方法的教程,例如this one by oracle.
  • 对象“tom”对于 main() 方法是本地的。该对象只能在 main() 方法中访问。所以你不能访问范围之外的本地成员,即在 tom_details() 方法内。
  • 这个问题的两个解决方案。 1) 将“tom”对象传递给 tom_details() 方法。 2) 用“static”关键字在主类中全局声明“tom”对象。

标签: java


【解决方案1】:

虽然您可以单独传递变量,但将引用传递给整个Student 对象可能更有意义。例如:

public static void main(String[] args) {
    Student tom = new Student();
    tom.name = "Tom";
    tom.id = 1;
    tom.age = 15;
    tom.year = 10;
    printDetails(tom);
}

private static void printDetails(Student student) {
    System.out.println(student.name);
    System.out.println(student.id);
    System.out.println(student.age);
    System.out.println(student.year);
}

在那之后我将采取的下一步措施是:

  • Student 一个接受姓名、ID、年龄和年份的构造函数
  • Student 中的所有字段设为私有(并且可能是最终的),而不是通过方法(例如getName())公开数据
  • 可能在Student 中添加一个printDetails() 方法,这样您就可以在您的main 方法中调用tom.printDetails()

【讨论】:

    【解决方案2】:

    我认为你可以只传递对象tom: 把方法改成

        private static void tom_details(Student tom) {
            System.out.println(tom.name);
            System.out.println(tom.id);
            System.out.println(tom.age);
            System.out.println(tom.year);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      相关资源
      最近更新 更多