`
Etwo
  • 浏览: 104707 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java模拟栈的编写

阅读更多

这是一个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();
	}
}
 
1
7
分享到:
评论

相关推荐

    用Java编写的模拟 金山打字的应用程序

    在本项目中,我们讨论的是一个使用Java编程语言编写的模拟金山打字应用程序。这个程序旨在复制并实现金山打字的大部分核心功能,为用户提供一个练习打字技能的平台。以下是一些关于这个项目的详细知识点: 1. **...

    java applet 模拟栈的进栈与出栈

    在这个特定的案例中,我们讨论的是如何使用Java Applet来模拟栈的数据结构,包括进栈(压入)和出栈(弹出)操作。栈是一种后进先出(LIFO)的数据结构,常用于各种算法和程序设计中。 首先,我们需要了解栈的基本...

    用JAVA编写计算器程序(模拟Windows计算器)

    ### 使用Java编写的计算器程序(模拟Windows计算器) #### 一、项目概述 本文档介绍了一个使用Java语言编写的简易计算器程序,该程序旨在模仿Windows系统的内置计算器功能。通过本项目,用户可以执行基本的数学...

    Java 模拟文件管理器

    在Java编程中,模拟文件管理器是一个常见的练习项目,它帮助开发者熟悉文件系统操作和基本的I/O(输入/输出)技术。这个程序的核心在于使用Java的`File`类来代表文件和目录,并通过控制台界面来实现创建、删除、移动...

    java sip 协议栈实现客户端和服务

    用户需要先运行"server.java"的main方法启动SIP服务器,然后运行"client.java"的main方法启动SIP客户端,模拟实际的通信场景。 在文件列表中,我们可以看到以下几个关键文件和目录: 1. "textclientdebug.log" 和 ...

    java编写的一个操作系统模拟程序

    在这个Java编写的模拟程序中,我们可以深入探讨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 模拟面试 Java

    在准备Java模拟面试时,除了深入理解以上知识点,还要注重实际编程能力的提升,如编写高质量、可读性强的代码,以及解决实际问题的能力。同时,对项目经验的分享和对新技术的关注也是展示专业素养的重要方面。

    停车场管理系统(以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入输出数据序列进行模拟管理。栈以顺序结构实现,队列以链表结构实现。)

    【问题描述】 设停车场是一个可停放N辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在南端,最先...请为停车场编写按上述要求进行管理的模拟程序。

    java中LinkedList集合类实现栈和队列.doc

    在Java中,我们可以利用LinkedList的addFirst()方法来模拟压栈操作,将新元素添加到链表头部,使用removeFirst()方法来模拟弹栈操作,删除并返回链表头部的元素。以下是一个简单的栈实现: ```java public class ...

    用JAVA写的手机充值模拟web服务程序

    通过对源代码的分析和学习,开发者可以深入理解Web服务的原理,以及如何在实际项目中运用Java技术栈。同时,这也是一个很好的实践案例,有助于提升开发者在分布式系统、网络通信以及数据库操作等方面的能力。

    用JAVA编写的物流网站的源代码

    【标题】"用JAVA编写的物流网站的源代码"提供了我们深入探讨JAVA在构建物流网站中的应用的机会。JAVA,作为一种广泛使用的编程语言,以其面向对象的特性、平台无关性以及丰富的类库,常被用于开发复杂的Web应用程序...

    JAVA实现的模拟电梯系统

    在本项目中,"JAVA实现的模拟电梯系统"是一个典型的基于JAVA编程语言的课程设计案例,旨在帮助学生理解和掌握多线程、事件驱动编程以及状态机等核心编程概念。这个系统通过模拟现实世界中的电梯运行过程,使得学习者...

    java编写的游戏

    本资源包含一个用Java编写的 jar 游戏,这为学习Java游戏编程提供了很好的实例。以下是一些关于Java游戏开发的重要知识点: 1. **Java基础**:首先,你需要对Java编程语言有基本的理解,包括类、对象、接口、继承、...

    使用JAVA模拟ATM机的一般功能

    ### 使用JAVA模拟ATM机的一般功能 #### 一、项目背景与目标 在本项目中,我们将使用Java编程语言来模拟一个简单的ATM自动取款机系统。该模拟程序旨在实现基本的银行账户操作,如存款、取款、查询余额等。通过此...

    Java实现栈和队列面试题

    这通常涉及模拟栈操作的过程,检查pop序列是否是push序列的逆序。 以上就是Java实现栈和队列面试题的主要内容。理解和熟练掌握这些知识点对于Java开发者来说至关重要,因为它们涉及到基础数据结构的运用,能够反映...

    java模拟编译器,实现词法,语法分析,生成语法树

    在实现Java模拟编译器时,开发者需要熟悉编译原理,包括正则表达式、上下文无关文法、栈数据结构以及类型系统等。同时,他们还需要理解Java语言的特性和语法规则。使用Java编写编译器本身也是一种挑战,因为Java是一...

    Java编写的微博注册

    下面将详细介绍这个项目涉及的Java知识点、设计模式以及可能用到的技术栈。 1. **Java基础知识**:此项目基于Java SE(标准版)开发,涵盖了面向对象编程的基本概念,如类、对象、继承、封装和多态。同时,还涉及到...

    j# java计算器 四则运算 栈

    【标题】"j# java计算器 四则运算 栈"所涉及的知识点主要集中在编程语言J#、计算器软件开发以及数据结构中的栈。这个项目是一个简单的计算器程序,它使用了J#这一微软推出的.NET框架下的Java方言来实现,同时具备...

    Java 电梯模拟程序 很逼真的电梯模拟程序,模拟电梯上下楼,开门/关门,上下楼请求等,比较综合的一个实例,对JAVA爱好者很有帮助。

    Java电梯模拟程序是一个典型的控制论问题,它涉及到多线程、事件驱动编程、状态机设计模式等多个编程概念。下面将详细解析这个程序所涵盖的知识点。 1. **多线程**:电梯模拟程序中,电梯的运行、开门、关门以及...

Global site tag (gtag.js) - Google Analytics