gpt4 book ai didi

Java封装的Array mutator方法

转载 作者:行者123 更新时间:2023-12-02 07:47:06 34 4
gpt4 key购买 nike

我正在尝试编写这个作业,但不幸的是,这让我很困难。

我搜索了互联网和教科书,但似乎找不到这种特殊困境的例子。

基本上,我需要为火车编写一个预订引擎,我们获得了要使用的启动代码,并且基本上写出了我们的方法并将它们插入适当的类中。

主要问题是,我们需要将保存火车票对象的主数组封装在一个单独的类中,并基本上编写需要与数组进行任何交互的更改器(mutator)和访问器方法,以保持数组在某些情况下不可访问和安全。不需要访问权限。

这是程序的驱动程序类

Private static void menuAdd() 


{
String passName,op1,op2;
int seatNum;
Boolean FCOption,waiter,indicator;
int duration;
char fClass,wService;

System.out.print("Please Enter a seat number :");
seatNum = stdin.nextInt();
stdin.nextLine();

System.out.print("Please Enter the passenger name :");
passName = stdin.nextLine();
System.out.print(passName);

System.out.print("Please Enter number of legs for this trip :");
duration = stdin.nextInt();

System.out.println("Would you like to consider a First Class ticket for an additional $20 per leg? :");
System.out.print("Please enter Y/N");
op1 = stdin.next();
fClass =op1.charAt(0);

stdin.nextLine();
System.out.print("Would you like to consider a waiter service for a flat $15 Fee?");
System.out.print("Please enter Y/N");
op2 = stdin.next();
wService =op2.charAt(0);


//Now we create the ticket object

TrainTicket ticketx = new TrainTicket(seatNum,passName,duration);

System.out.println("This is an object test printing pax name"+ticketx.getName());

TicketArray.add(ticketx);

}

所以基本上,我可以毫无问题地编写向用户请求各种详细信息的代码,然后使用 TrainTicket 对象的构造函数调用来实例化该对象,当我使用将对象传递给数组类时

TicketArray.add(ticketx);

eclipse 告诉我“无法从 TicketArray 类型中对非静态方法 add(TrainTicket) 进行静态引用”

这就是数组类的样子

    Public class TicketArray
{
// ..............................................
// .. instance variables and constants go here ..
// ..............................................
int counter ;
int arraySize =100 ;

// constructor
public TicketArray()
{
// ....................
// .. implement this ..
// ....................
TrainTicket [] tickets =new TrainTicket[arraySize];
}

// add() method:
// take the passed in TrainTicket object and attempt to store it in the
// data structure. If the structure is full, or the seat of the given
// TrainTicket has already been booked, the operation should return
// false; otherwise return true.

public boolean add(TrainTicket data)
{
// ....................
// .. implement this ..
// ....................

tickets[counter]=data;
// dummy return value so the skeleton compiles
return false;
}

有什么想法为什么它不起作用吗?如果有人可以解释如何以这种方式封装数组,我将不胜感激,我熟悉构造函数的工作方式及其方法的编写方式,但由于某种原因,我发现很难对数组做同样的事情.

提前致谢。

最佳答案

这里的问题不在于赋值器或访问器方法甚至数组,而在于您在尝试使用 TicketArray 类之前没有创建它的实例。 add(Ticket t) 被定义为实例方法,这意味着您需要先拥有 TicketArray 的实例,然后才能向其添加。

试试这个:

//create a new Ticket
TrainTicket ticketx = new TrainTicket(seatNum,passName,duration);

//create a new Ticket Array
TicketArray tarr = new TicketArray();
tarr.add(ticketx);

关于Java封装的Array mutator方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10670655/

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