gpt4 book ai didi

java - 继承使用 Scanner 的 Java 构造函数

转载 作者:行者123 更新时间:2023-12-02 10:50:27 25 4
gpt4 key购买 nike

我是一名刚开始学习Java的本科生。这个问题是由创建事件模拟器的分配引起的,但我将仅显示我有问题的代码部分,特别是构造函数。

我打算创建一个队列对象和一个继承自同一队列对象的 PriorityQueue 对象,因为我想使用队列对象的功能。我打算在一个名为 QueueManager 的类中创建它们,但我现在遇到的问题是我想在 Queue(父类)的构造函数中使用 Scanner,但我只想创建一个空的 PriorityQueue(子类)对象,而不需要扫描。

来自编译器的错误消息

error: constructor Queue in class Queue cannot be applied to given types;
public PriorityQueue(){
^
required: String[]
found: no arguments
reason: actual and formal argument lists differ in length

如何做到这一点,或者这是否是一个好的程序设计?

Queue Manager

class QueueManager{
private PriorityQueue p;
private Queue q;

public QueueManager(String [] args){
this.q=new Queue(args);
this.p=new PriorityQueue();
}

Queue

import java.util.Scanner;

class Queue{
protected Event [] events =new Event [100];
private int start=0;
private int end=0;
protected int size=0;
private double time=0;


public Queue(String [] args){
Scanner s= new Scanner(System.in);
int pos=0;
while (s.hasNextDouble()){
double j=s.nextDouble();
Event arrives=new Event("arrives",new Customer(j));
this.events[pos]=arrives;
pos++;
}
this.end=pos-1;
this.size=pos;
}

PriorityQueue

class PriorityQueue extends Queue{
private double totaltime=0;
private int totalsize=0;

public PriorityQueue(){
};

PS:我有Python背景,在那里学习了一些OOP(这似乎有点被操纵),但没有强调编程设计实践。如果有人对 Python 和 OOP 编程设计技巧中的 Java 有一些硬性规定,请随时分享。谢谢。

最佳答案

如果您定义一个带参数的构造函数,您将不再免费获得无参数构造函数。因此,您正在调用一个不存在的构造函数,这正是编译器所提示的。

这里您不使用传递到队列构造函数中的参数,只需从构造函数定义中删除参数即可。如果两者都需要,那么您必须定义单独的构造函数,一个不带参数,另一个带 String[] 参数。

为了分离关注点:队列构造函数中的内容实际上属于单独的测试工具脚本,它并不特定于队列本身。

关于java - 继承使用 Scanner 的 Java 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52223056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com