求教一个问题,两个方法共享一个栈中的数据如何实现@

Fuckymary 2013-09-25 04:22:10
Car.java

package park;
import java.util.*;
public class Car {
private int carNumber;
private int arriveTime;
private int leaveTime;
private int money;
private int MAXSIZE=100;
public Car(int carNumber, int arriveTime, int leaveTime, int money) {
this.carNumber = carNumber;
this.arriveTime = arriveTime;
this.leaveTime = leaveTime;
this.money = money;
}

public Car(int carNumber, int arriveTime) {
this.carNumber = carNumber;
this.arriveTime = arriveTime;
}

public Car(int carNumber, int leaveTime, int money) {
this.carNumber = carNumber;
this.leaveTime = leaveTime;
this.money = money;
}

public Car(){}
public int getArriveTime() {
return arriveTime;
}
public void setArriveTime(int arriveTime) {
this.arriveTime = arriveTime;
}
public int getCarNumber() {
return carNumber;
}
public void setCarNumber(int carNumber) {
this.carNumber = carNumber;
}
public int getLeaveTime() {
return leaveTime;
}
public void setLeaveTime(int leaveTime) {
this.leaveTime = leaveTime;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}

public void carArrive(Stack s){
boolean flag = false;
//Stack s=new Stack();
Car c=null;
if(s.size()<MAXSIZE){
for(int i=0;i<s.size();i++){
c=(Car)s.get(i);
if(c.getCarNumber()==this.getCarNumber()){
flag=false;
System.out.println("此号已有!");
break;
}
else{
flag=true;
}
}
}else{
flag=true;
}
if(flag){
//s.push(this);
s.addElement(this);
}
System.out.println(this.getCarNumber()+"到达");
System.out.println("到达时间"+this.getArriveTime());

}

public void carLeave(Stack s){
Car c=null;
//Iterator it=s.iterator();
System.out.println(s.isEmpty());
for(int i=0; i<s.size();i++){
c=(Car)s.get(i);
if(c.getCarNumber()==this.getCarNumber()){
s.removeElementAt(i);
this.setMoney(this.getArriveTime()-this.getLeaveTime());
System.out.println(this.getCarNumber()+"离开");
System.out.println("离开时间"+this.getArriveTime());
}
}
}


/*
public static void main(String[] args){
Car c=new Car();
c.carArrive();
}
*/


}


CarDemo.java

package park;
import java.awt.*;
import java.awt.event.*;
import java.util.Stack;

import javax.swing.*;
import javax.swing.GroupLayout.Alignment;
public class CarDemo extends JFrame implements ActionListener{

private int frame_width=500;
private int frame_height=300;
private JLabel numberL,timeL,moneyL;
private JTextField numberT,timeT,moneyT;
private JButton arriveB,leaveB;
private JPanel panel1,panel2,panel3,panel4;
Stack s;
public CarDemo(String title){
super(title);
s=new Stack();
this.setLayout(new GridLayout(4,1));
numberL=new JLabel("车号:");
numberT=new JTextField(10);
numberT.setPreferredSize(new Dimension(100,30));
panel1=new JPanel(new FlowLayout());
panel1.add(numberL);
panel1.add(numberT);
panel1.setBackground(Color.BLUE);
//contentPane.add(panel1);
this.add(panel1);
timeL=new JLabel("时间:");
timeT=new JTextField(10);
timeT.setPreferredSize(new Dimension(100,30));
panel2=new JPanel(new FlowLayout());
panel2.add(timeL);
panel2.add(timeT);
panel2.setBackground(Color.red);
//contentPane.add(panel2);
this.add(panel2);
moneyL=new JLabel("费用:");
moneyT=new JTextField(10);
moneyT.setEditable(false);
moneyT.setPreferredSize(new Dimension(100,30));
panel3=new JPanel(new FlowLayout());
panel3.add(moneyL);
panel3.add(moneyT);
panel3.setBackground(Color.gray);
//contentPane.add(panel3);
this.add(panel3);
arriveB=new JButton("到达");
leaveB=new JButton("离开");
arriveB.setPreferredSize(new Dimension(100,30));
leaveB.setPreferredSize(new Dimension(100,30));
//arriveB.setContentAreaFilled(false);
//leaveB.setContentAreaFilled(false);
arriveB.setBorderPainted(false);
leaveB.setBorderPainted(false);
arriveB.addActionListener(this);
leaveB.addActionListener(this);
panel4=new JPanel(new FlowLayout());
panel4.add(arriveB);
panel4.add(leaveB);
panel4.setBackground(Color.yellow);
//contentPane.add(panel4);
this.add(panel4);
setVisible(true);
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
int centerX = screenSize.width / 2;
int centerY = screenSize.height / 2;
setBounds(centerX - frame_width / 2, centerY - frame_height / 2,frame_width, frame_height);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public void actionPerformed(ActionEvent e) {
Car car=null;
//Stack s=new Stack();
if(e.getSource()==arriveB){
int number=Integer.valueOf(numberT.getText());
int arriveTime=Integer.valueOf(timeT.getText());
car=new Car(number,arriveTime);
car.carArrive(s);
}
if(e.getSource()==leaveB){
int number=Integer.valueOf(numberT.getText());
int leaveTime=Integer.valueOf(timeT.getText());
car=new Car(number,leaveTime);
car.carLeave(s);
moneyT.setText(String.valueOf(car.getMoney()));



}


}

public static void main(String[] args){
new CarDemo("停车管理");

}

}


点击车进会往栈中存,但是点击离开则栈就为空?
...全文
167 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fuckymary 2013-09-25
  • 打赏
  • 举报
回复
引用 3 楼 healer_kx 的回复:
我先不看你的代码。。。 func a() { int[] v = ...Java我也不会了; func1(v); func2(v); } 我func1和func2算不算访问了同一个栈上的数据?
我觉着算
healer_kx 2013-09-25
  • 打赏
  • 举报
回复
我先不看你的代码。。。 func a() { int[] v = ...Java我也不会了; func1(v); func2(v); } 我func1和func2算不算访问了同一个栈上的数据?
Fuckymary 2013-09-25
  • 打赏
  • 举报
回复
引用 1 楼 healer_kx 的回复:
那就用堆得了呗,非得和技术体系较真?
数据结构实验要求必须用栈!
healer_kx 2013-09-25
  • 打赏
  • 举报
回复
那就用堆得了呗,非得和技术体系较真?
源码链接: https://pan.quark.cn/s/46590cc698ca 在信息技术领域,特别是在网络应用程序开发和用户界面设计方面,构建支持多选项选择的下拉选择框是一项普遍的需求。常规的下拉选择框往往仅限于让用户选择一个选项,然而,通过定制和扩展,我们能够构建一个能够支持多个选项选择的下拉选择框。以下将对这一主题进行深入探讨。 我们将探讨“支持多选项选择的下拉选择框”的构建方法。这种功能通常应用于用户需要从众多选项中进行选择,而全部选项不可能在页面上完全展示的情况。在这种情况下,一个可进行多选项选择的下拉选择框提供了一种既高效又节省空间的解决方案。描述中提到,这种多选项下拉选择框是通过一个被称为“checkboxlist”的元素构建的,这可能是使用特定的编程语言(如JavaScript、HTML5或特定的前端框架如React、Vue)中的一个组件或控件。 在网络应用程序开发中,实现此类功能通常需要以下步骤: 1. **HTML结构**:构建一个基础的下拉选择框结构,通常使用``元素的样式。 3. **JavaScript交互**:为了实现checkboxlist的效果,通常会运用JavaScript或jQuery来处理用户的交互事件,如点击、键盘操作等,同时更新选定的选项状态。 4. **自定义控件**:在某些场景下,为了获得更佳的用户体验,开发者可能会选择创建自定义的用户控...

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧