【问题标题】:Getter isn't returning anything when I try to print using the get method当我尝试使用 get 方法打印时,Getter 没有返回任何内容
【发布时间】:2020-11-19 09:18:06
【问题描述】:

我在主类中创建了一个对象,并将所有相关参数都提供给了“成员”类中的构造函数。 但是,当我尝试通过调用 getName() 来打印名称时,它会打印一个空白区域...

任何提示都会有所帮助

while (true) {
    System.out.print("Name :");
    String nameInput=input.nextLine();
    input.next();
    System.out.print("Number : ");
    String number=input.nextLine();
    input.next();
    try {
        System.out.println("Type: \n 1/2/3...?");
        int choice=input.nextInt();
        switch (choice){
            case 1:{
                member object1=new member(nameInput,number);
                System.out.println("Default name : "+object1.getName());

            } case 2:{
                //this is just a sample print
                System.out.println("Case 2 selected");
            } case 3:{
                System.out.println("Case 3 selected");
            } default:{
                System.out.println("Error");
            }
        }
   }catch (InputMismatchException e){
        System.out.println("Error");
        input.next();

这是成员类

public class member {
    private String Name;
    private String Number;

    public member(String name, String number) {
        Name = name;
        Number = number;
    }
    public String getName() { return Name; }
    public String getIDNumber() { return Number;}
}

【问题讨论】:

  • 我没有立即明白为什么 getName() 方法应该有任何问题。首先要做的是使用调试器检查 nameInput 在分配后是什么。 Eclipse、IntelliJ 或 Netbeans 等任何集成开发环境都允许您这样做。您可能应该在分配发生的行中设置一个断点,然后在调试器中运行到该点并单步运行,同时观察相关变量的状态。
  • 您的代码 1) 包含许多违反 Java 命名约定的行为,以及 2) 它无法编译。请提供正确的代码 sn-ps。
  • 很抱歉构造函数名称。我在发布此问题之前更改了类名,但忘记相应地更改构造函数名称。请再看一遍我已经编辑过了!
  • 再次:1) 代码无法编译; 2)不完整; 3) 你不能像member Object=new member(nameInput,number); 那样使用类型作为变量名/标识符(Object 是Java 中的一个类); 3) 您的 catch 块不完整。您有很多错误,请尝试提供正确的工作代码。
  • 哦!我也没有看到那个..这些错误发生是因为我在发布这个问题之前试图更改我的初始变量名和对象名。你能不能忘记我的愚蠢错误,看看!

标签: java class methods constructor return


【解决方案1】:

问题出在您的构造函数中。构造函数是名称与类名匹配的特殊方法。请使用大写的类名

【讨论】:

    【解决方案2】:

    自定义构造函数的名称必须与类名完全相同(包括大写和小写),在您使用 keyword Object 命名对象的开关的情况 1 中,尝试更改那些东西!!

    【讨论】:

    • 很抱歉构造函数名称。我在发布之前更改了类名,但忘记更改构造函数名称。请再看一遍我已经编辑过了!
    • 尝试更改您实例化的对象的名称
    • 现在我明白了,您之前是否导入了扫描仪库并创建了对象? bc 我看到了输入扫描器,但没有看到您创建它的代码
    • 扫描仪对象在这段代码 sn -p 之前被初始化
    • 尝试将您发布的第一个代码块粘贴到方法中,例如。 :public static void execute() {},也将您的成员类粘贴到单独的文件中,以防万一,尝试在 catch{} 中捕获一般异常
    猜你喜欢
    • 2020-09-09
    • 2023-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多