这是一个java模拟栈的编写
package net.etwo.cec.stack;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
*
* @author etwo
*
*/
public class ImitateStack {
private JFrame jfMain;// 主窗体
private JPanel jpMain;// 面板
private JLabel jlShowStack, jlOneNum, jlOutStackState, jlState;
private JTextField jtfShowStack, jtfOneNum, jtfOutStackState;
private JButton jbtnOutStack, jbtnInStack, jbtnClearStack;
public ImitateStack() {
jfMain = new JFrame("栈模拟器");
jpMain = new JPanel();
jlState = new JLabel("栈模拟器!");
jlShowStack = new JLabel("栈显示情况:");
jlOneNum = new JLabel("请输入一个整数:");
jlOutStackState = new JLabel("出栈情况:");
jtfShowStack = new JTextField(50);
jtfOneNum = new JTextField(30);
jtfOutStackState = new JTextField(30);
jbtnOutStack = new JButton("出 栈");
jbtnInStack = new JButton("进 栈");
jbtnClearStack = new JButton("清空栈");
jpMain.setLayout(null);
jlState.setBounds(220, 20, 200, 20);
jlShowStack.setBounds(29, 60, 100, 20);
jtfShowStack.setBounds(133, 60, 250, 20);
jbtnOutStack.setBounds(400, 60, 75, 20);
jlOneNum.setBounds(3, 100, 150, 20);
jtfOneNum.setBounds(133, 100, 250, 20);
jbtnInStack.setBounds(400, 100, 75, 20);
jlOutStackState.setBounds(42, 140, 150, 20);
jtfOutStackState.setBounds(133, 140, 250, 20);
jbtnClearStack.setBounds(400, 140, 75, 20);
jpMain.add(jlState);
jpMain.add(jlShowStack);
jpMain.add(jtfShowStack);
jpMain.add(jbtnOutStack);
jpMain.add(jlOneNum);
jpMain.add(jtfOneNum);
jpMain.add(jbtnInStack);
jpMain.add(jlOutStackState);
jpMain.add(jtfOutStackState);
jpMain.add(jbtnClearStack);
jfMain.add(jpMain);
jfMain.setSize(566, 370);
jfMain.setLocationRelativeTo(null);
jfMain.setVisible(true);
jfMain.setDefaultCloseOperation(jfMain.EXIT_ON_CLOSE);
// 设置栈本身不可编辑
jtfShowStack.setEnabled(false);
// 进栈
jbtnInStack.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
actionMain(jtfOneNum, jbtnInStack);
}
});
// 栈清空
jbtnClearStack.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String strStack = jtfShowStack.getText();
if ("".equals(strStack)) {
JOptionPane.showMessageDialog(jfMain, "栈已为空!");
} else {
jtfShowStack.setText("");
}
}
});
// 出栈
jbtnOutStack.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String str = jtfShowStack.getText().trim();
if ("".equals(str)) {
JOptionPane.showMessageDialog(jfMain, "栈已经为空");
} else {
String[] strBuf = str.split(" ");
for (int i = strBuf.length - 1; i >= 0; i--) {
jtfOutStackState.setText(strBuf[0]);
jtfShowStack.setText(str.substring(strBuf.length - i));
break;
}
}
}
});
}
public void actionMain(JTextField jtfNum, JButton jbtnStack) {
String numStack = jtfNum.getText().trim();
if ("".equals(numStack)) {
JOptionPane.showMessageDialog(jfMain, "不能为空");
} else {
try {
Integer intStack = Integer.parseInt(numStack);
jtfShowStack.setText(numStack + " " + jtfShowStack.getText());
jtfNum.setText("");
// jbtnStack.setEnabled(false);
} catch (Exception e2) {
// TODO: handle exception
JOptionPane.showMessageDialog(jfMain, "请输入整数");
}
}
}
public static void main(String[] args) {
new ImitateStack();
}
}
分享到:
相关推荐
在本项目中,我们讨论的是一个使用Java编程语言编写的模拟金山打字应用程序。这个程序旨在复制并实现金山打字的大部分核心功能,为用户提供一个练习打字技能的平台。以下是一些关于这个项目的详细知识点: 1. **...
在这个特定的案例中,我们讨论的是如何使用Java Applet来模拟栈的数据结构,包括进栈(压入)和出栈(弹出)操作。栈是一种后进先出(LIFO)的数据结构,常用于各种算法和程序设计中。 首先,我们需要了解栈的基本...
### 使用Java编写的计算器程序(模拟Windows计算器) #### 一、项目概述 本文档介绍了一个使用Java语言编写的简易计算器程序,该程序旨在模仿Windows系统的内置计算器功能。通过本项目,用户可以执行基本的数学...
在Java编程中,模拟文件管理器是一个常见的练习项目,它帮助开发者熟悉文件系统操作和基本的I/O(输入/输出)技术。这个程序的核心在于使用Java的`File`类来代表文件和目录,并通过控制台界面来实现创建、删除、移动...
用户需要先运行"server.java"的main方法启动SIP服务器,然后运行"client.java"的main方法启动SIP客户端,模拟实际的通信场景。 在文件列表中,我们可以看到以下几个关键文件和目录: 1. "textclientdebug.log" 和 ...
在这个Java编写的模拟程序中,我们可以深入探讨Java语言的应用以及操作系统的核心概念。 首先,Java作为一种面向对象的编程语言,因其跨平台性和强大的类库支持,成为构建这种模拟程序的理想选择。在描述中提到的...
以下是一个简单的Java实现,创建一个名为`MyStack`的类来模拟栈的操作: ```java public class MyStack { private char[] stack; private int top; public MyStack(int size) { this.stack = new char[size]; ...
在准备Java模拟面试时,除了深入理解以上知识点,还要注重实际编程能力的提升,如编写高质量、可读性强的代码,以及解决实际问题的能力。同时,对项目经验的分享和对新技术的关注也是展示专业素养的重要方面。
【问题描述】 设停车场是一个可停放N辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在南端,最先...请为停车场编写按上述要求进行管理的模拟程序。
在Java中,我们可以利用LinkedList的addFirst()方法来模拟压栈操作,将新元素添加到链表头部,使用removeFirst()方法来模拟弹栈操作,删除并返回链表头部的元素。以下是一个简单的栈实现: ```java public class ...
通过对源代码的分析和学习,开发者可以深入理解Web服务的原理,以及如何在实际项目中运用Java技术栈。同时,这也是一个很好的实践案例,有助于提升开发者在分布式系统、网络通信以及数据库操作等方面的能力。
【标题】"用JAVA编写的物流网站的源代码"提供了我们深入探讨JAVA在构建物流网站中的应用的机会。JAVA,作为一种广泛使用的编程语言,以其面向对象的特性、平台无关性以及丰富的类库,常被用于开发复杂的Web应用程序...
在本项目中,"JAVA实现的模拟电梯系统"是一个典型的基于JAVA编程语言的课程设计案例,旨在帮助学生理解和掌握多线程、事件驱动编程以及状态机等核心编程概念。这个系统通过模拟现实世界中的电梯运行过程,使得学习者...
本资源包含一个用Java编写的 jar 游戏,这为学习Java游戏编程提供了很好的实例。以下是一些关于Java游戏开发的重要知识点: 1. **Java基础**:首先,你需要对Java编程语言有基本的理解,包括类、对象、接口、继承、...
### 使用JAVA模拟ATM机的一般功能 #### 一、项目背景与目标 在本项目中,我们将使用Java编程语言来模拟一个简单的ATM自动取款机系统。该模拟程序旨在实现基本的银行账户操作,如存款、取款、查询余额等。通过此...
这通常涉及模拟栈操作的过程,检查pop序列是否是push序列的逆序。 以上就是Java实现栈和队列面试题的主要内容。理解和熟练掌握这些知识点对于Java开发者来说至关重要,因为它们涉及到基础数据结构的运用,能够反映...
在实现Java模拟编译器时,开发者需要熟悉编译原理,包括正则表达式、上下文无关文法、栈数据结构以及类型系统等。同时,他们还需要理解Java语言的特性和语法规则。使用Java编写编译器本身也是一种挑战,因为Java是一...
下面将详细介绍这个项目涉及的Java知识点、设计模式以及可能用到的技术栈。 1. **Java基础知识**:此项目基于Java SE(标准版)开发,涵盖了面向对象编程的基本概念,如类、对象、继承、封装和多态。同时,还涉及到...
【标题】"j# java计算器 四则运算 栈"所涉及的知识点主要集中在编程语言J#、计算器软件开发以及数据结构中的栈。这个项目是一个简单的计算器程序,它使用了J#这一微软推出的.NET框架下的Java方言来实现,同时具备...
Java电梯模拟程序是一个典型的控制论问题,它涉及到多线程、事件驱动编程、状态机设计模式等多个编程概念。下面将详细解析这个程序所涵盖的知识点。 1. **多线程**:电梯模拟程序中,电梯的运行、开门、关门以及...