首页 > 解决方案 > 类的构造函数有问题

问题描述

该程序要求用户输入两次姓名和就业 ID,而只需输入一次。

我正在尝试使用继承到名为 Nursing 的类的名称和就业 ID 实例变量打印一个句子。该程序运行良好。但是,问题在于它要求用户输入两次姓名和就业标识。

AbstractTest.java -

import java.util.*;

class AbstractTest {
    String name;
    int employmentId;

    AbstractTest (){
        //initialize name and employmentId instance variables
        System.out.println("enter name");
        Scanner readString = new Scanner(System.in);
        this.name = readString.nextLine();

        System.out.println("enter ID");
        Scanner readInt = new Scanner(System.in);
        this.employmentId = readInt.nextInt();
    }
    // constructor ends
}

护理.java -

class Nursing extends AbstractTest{
    void display() {
        System.out.println("the employment detail: " + "Name: " + 
        name + "ID: " + employmentId);
    }
}

Main.java -

class Main {
    public static void main(String[] args) {
        AbstractTest abstractTest = new AbstractTest();
        Nursing nursing = new Nursing();
        nursing.display();
    }
}

//它运行良好,但不知何故重复两次输入名称和ID。它应该只需要一次(下面是 MS DOS 的结果)。

输入名字 蝙蝠侠

输入 ID 1234

输入名字 超人

输入 ID 5678

就业详情: 姓名:SupermanID:5678

标签: javaconstructorthis

解决方案


删除线

AbstractTest abstractTest = new AbstractTest();

尽管您不使用该对象,但它正在被创建并且Scanner正在请求 2 个输入。

Nursing nursing = new Nursing();

就足够了:它将调用其父级的构造函数,即AbstractTest.


推荐阅读