- 浏览: 3924 次
- 性别:
- 来自: 济南
-
文章分类
最新评论
-
wodexxh:
不好意思 由于是下班时间发的 可能里面有很多错误没能及 ...
实现删除SQL关联表中的内容 -
wei_chengpei:
很感谢,我试过了,成功的解决了我的问题!
myeclipse安装porpertiesEditor
Ⅱ 卷
四、操作题
242.
在下图中的九个点上,空出中间的点,其余的点上任意填入数字1至8;1的位置保持不动,
然后移动其余的数字,使1到8顺时针从小到大排列。移动的规则是:只能将数字沿线移向
空白的点。请将制作好的源文件保存为“t2.java”。
要求:
(1)分析问题,并描述你的算法设计思想。
(2)编程显示数字移动过程。
方法:首先找到1的位置;假定在A处。
如果1的下一个(B)是2,就找3;否则,
从1的下一个开始,往下找到2,假定位置在C上。
C的2到空位,C的前一个到C,......,B到B的下一个,最后,2到B,2排好。以些类推再排3,4......
关键问题在于,从1往下依次找2,3......移动时,却是反向。于是将每个数字存储于双向循环链表的
结点中。正向查找,反向移动。
public class GuardQueue{
public static void main(String[] args){
SortedCircute sc=new SortedCircute(new int[]{8,5,2,4,7,3,1,6});
int[] result=sc.sort();
for(int i=0;i<result.length;i++){
System.out.print(result[i]);
}
System.out.println();
}
}
class SortedCircute{
private Element head;
private int count;
public SortedCircute(int[] values){
count=values.length;
Element previous,next=null;
head=previous=new Element(values[0]);
for(int i=1;i<count;i++){
next=new Element(values[i]);
previous.next=next;
next.previous=previous;
previous=next;
}
next.next=head;
head.previous=next;
Element e=head;
}
public int[] sort(){
int maxSteps=count*(count+1)/2,index=0;
int[] steps=new int[maxSteps];
Element start=head;
while(start.value!=1){
start=start.next;
}
Element center=new Element(0),temp;
for(int i=1;i<count;i++){
if(start.next.value!=i+1){
for(temp=start.next.next;temp.value!=i+1;temp=temp.next);
center.previous=temp;
start.next.previous=center;
temp=center;
do{
temp.value=temp.previous.value;
steps[index++]=temp.value;
temp=temp.previous;
}while(temp!=center);
start.next.previous=start;
}
start=start.next;
}
int[] result=new int[index];
System.arraycopy(steps,0,result,0,index);
return result;
}
public String toString(){
String result=String.valueOf(head.value);
Element e=head.next;
for(int i=1;i<count;i++){
result+="-"+String.valueOf(e.value);
}
return result;
}
class Element{
Element next,previous;
int value;
public Element(int value){
this.value=value;
}
}
}
243.
编写一个Java应用程序,对于给定的一个字符串的集合,格式如:{aaa bbb ccc}, {bbb
ddd},{eee fff},{ggg},{ddd hhh} 要求将其中交集不为空的集合合并,要求合并完成后
的集合之间无交集,例如上例应输出:{aaa bbb ccc ddd hhh},{eee fff}, {ggg} 请将制作
好的源文件保存为“t1.java”。
(1)分析问题,描述你解决这个问题的思路、处理流程,以及算法复杂度。
(2)编程实现题目要求的集合合并。
(3)描述可能的改进(改进的方向如效果,算法复杂度,性能等等)。
public class Interest2{
static ArrayList<StringSet> listSup = new ArrayList<StringSet>();
public void init (String... str) {
listSup.add(new StringSet(str));
}
public static void main(String args[]) {
Interest2 t = new Interest2();
//初始化
t.init("aaa","bbb","ccc");
t.init("eee","fff");
t.init("ggg");
t.init("ddd","hhh");
t.init("bbb","ddd");
//把交集不为空的集合合并
boolean flag = false;//标记是否有合并
for(int i = 0; i < listSup.size() - 1; i++) {
for (int j = i + 1; j < listSup.size(); j++) {
if (listSup.get(i).comp(listSup.get(j))) {
listSup.get(i).combine(listSup.get(j));//合并到get(i)中
listSup.remove(j);
flag = true;
}
}
if (flag) {//有合并下一次要从listSup的第一个元素开始从新比较
i = -1;
flag = false;
}
}
//输出结果
Iterator<StringSet> it = listSup.iterator();
it.hasNext();
while (true) {
System.out.print(it.next());
if (it.hasNext())
System.out.print(",");
else
break;
}
}
}
class StringSet {
ArrayList<String> listString = new ArrayList<String>();
static String theSameString = "";
//提供数组参数的构造器
public StringSet(String[] strs) {
for (int i = 0; i < strs.length; i++) {
listString.add(strs[i]);
}
}
//比较两个StringSet中是否有相同的元素,有还回true
public boolean comp (StringSet strSet) {
for (int j = 0; j < this.listString.size(); j++) {
for (int i = 0; i < strSet.listString.size(); i++) {
if (this.listString.get(j).equals(strSet.listString.get(i))) {
theSameString = this.listString.get(j);
return true;
}
}
}
return false;
}
//结合两个StringSet,不能含相同的元素
public void combine (StringSet strSet) {
this.listString.addAll(strSet.listString);
while (this.listString.contains(StringSet.theSameString)) {//以防有多个相同的
this.listString.remove(StringSet.theSameString);
}
this.listString.add(StringSet.theSameString);
}
//打印StringSet对象
public String toString () {
Collections.sort(this.listString);//对list中的元素排序
Iterator<String> it = this.listString.iterator();
String str = "";
str += "{ ";
while (it.hasNext()) {
str += it.next() + " ";
}
str += "}";
return str;
}
}
244.
撰写一个 myString class,其中包含一个String对象,可于构造函数中通过引数来设定初值。
加入toString()和concatenate()。后者会将String对象附加于你的内部字符串尾端。请为
myString()实现clone()。撰写两个static函数,令它们都接收myString reference x引数并调
用x.concatenate(“test”)。但第二个函数会先调用clone()。请测试这两个函数并展示其不同
结果。
public class MyString implements Cloneable
{
String sourceString;
//带参数的构造函数
public MyString(String str)
{
//在构造函数中通过引用数来设定初值
this.sourceString = str;
}
/**
* 重写toString方法
*/
public String toString()
{
StringBuilder sb = new StringBuilder();
sb.append(sourceString);
sb.append(":");
return sb.toString();
}
/**
* 实现讲传入参数连接到你的字符串尾端
*
* @param str
* 传入参数
* @return 链接好的字符串
*/
public String concatenate(String str)
{
return sourceString.concat(str);
}
/**
* 克隆实现
*/
public Object clone() throws CloneNotSupportedException
{
return super.clone();
}
/**
* 克隆前
*/
public static void cloneBegin(String str)
{
MyString testString = new MyString(" Clone begin ");
String result = testString.concatenate(str);
System.out.println(testString.toString() + result);
}
/**
* 克隆后
*/
public static void cloneAfter(String str) throws CloneNotSupportedException
{
MyString testString = new MyString(" Clone begin ");
MyString testStringClone = (MyString)testString.clone();
String result = testStringClone.concatenate(str);
System.out.println(testStringClone.toString()+result);
}
/**
* @param args
*/
public static void main(String[] args)
{
cloneBegin("test");
try
{
cloneAfter("testClone");
} catch (CloneNotSupportedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
245.
为Thread撰写两个子类,其中一个的run()在启动后取得第二个Thread object reference,然
后调用wait()。另一个子类的run()在过了数秒之后调用notifyAll(),唤醒第一个线程,使第
一个线程可以印出消息。
MasterThread.java
public class MasterThread extends Thread {
public static void main(String[] args) {
MasterThread mt = new MasterThread();
mt.start();
}
public void run() {
SlaverThread st = new SlaverThread(this);
st.start();
synchronized (this) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("MasterThread say hello!");
}
}
SlaverThread.java
public class SlaverThread extends Thread {
private Thread mt = null;
public SlaverThread(Thread mt) {
this.mt = mt;
}
public void run() {
try {
System.out.println("SlaverThread started..");
sleep(3000);
System.out.println("3 second past");
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("notify MasterThread");
synchronized (mt) {
mt.notifyAll();
}
}
}
246.
编写一个简单的Web程序,根据当前时间的不同,在JSP页面上显示“上午”、“下午”。
只要在jsp页面中假如如下代码就行
<%
if(new Date().getHours()>=0 && new Date().getHours()<=12){//看看当前时间是在0点到中午12点之间
%>
上午好
<%
}
else{
%>
下午好
<%
}
%>
247.
编写一个简单的Web程序,根据表彰中的用户名,让合法的用户登入主页面,使用session
对象将用户名显示在主页面中,不合法的用户将回发无效页面。
login.jsp
<%@ page language="java" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Login page</title>
</head>
<body>
<div>
<form action="login.servlet" method="post">
<fieldset style="width:50px;">
username:<input type="text" name="name" /><br>
password:<input type="password" name="password" />
<input type="submit" value="submit" />
</fieldset>
</form>
</div>
</body>
</html>
main.jsp
<%@ page language="java" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
<div>Welcome:<%=session.getAttribute("name")%></div>
</body>
</html>
LoginServlet
package test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
public LoginServlet() {
super();
}
public void destroy() {
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name=request.getParameter("name");
String password=request.getParameter("password");
if(null!=name&&"admin".equals(name)&&null!=password&&"admin".equals(password)){
request.getSession().setAttribute("name", name);
request.getRequestDispatcher("main.jsp").forward(request, response);
}
else{
response.sendRedirect("login.jsp");
}
}
public void init() throws ServletException {}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>test.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>login.servlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
248.
使用JSP+JavaBean的模式开发一个Web程序,在JSP页面中实例化一个JavaBean,然后
再把数据显示在页面中。
package mysql;
import java.sql.*;
public class Test{
private String user = "root";
private String pass = "soft5";
private String url = "";
private Connection con = null;
private Statement stmt = null;
private ResultSet rs = null;
public Test(){}
public void setUser (String user){
this.user = user;
}
public void setPass (String pass){
this.pass = pass;
}
public void BulidCon(){
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
url ="jdbc:mysql://localhost:3306/bookshop?useUnicode=true&characterEncoding=UTF-8";
con= DriverManager.getConnection(url,user,pass);
stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
}catch (Exception e){
System.out.println(e.getMessage());
}
}
public ResultSet selectLog(String sql){
try{
BulidCon();
rs = stmt.executeQuery(sql);
}catch(Exception e){
System.out.println(e.getMessage());
}
return rs;
}
public void updateLog(String sql){
try{
BulidCon();
stmt.executeUpdate(sql);
}catch (Exception e){
System.out.println(e.getMessage());
}
}
public void close(){
try{
con.close();
stmt.close();
}catch (SQLException e){
System.out.println(e.getMessage());
}
}
}
数据插入
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*;"%>
<jsp:useBean id="ss" class="mysql.Test" scope="page"/>
<html>
<body>
<%
String sql="insert into books (id, bookName) values ('id','book')";
ss.updateLog(sql);
%>
</body>
</html>
数据查询
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*;"%>
<jsp:useBean id="ss" class="mysql.text" scope="page"/>
<html>
<body>
<%
ResultSet rs = null;
rs = ss.selectLog("select * from books");
while(rs.next()){
String bookId = rs.getString("ID");
String bookName = rs.getString("bookName");
out.print(bookId);
out.print(bookName);
}
%>
</body>
</html>
249.
使用JSP+Servlet+JavaBean的模式开发一个Web程序,将表单提交的数据显示在下一页面
中。
package test;
public class UserInfo {
private String name;
private String password;
private String gender;
public UserInfo(){}
public UserInfo(String name,String password,String gender){
this.name=name;
this.password=password;
this.gender=gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
InfoServlet
package test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class InfoServlet extends HttpServlet {
public InfoServlet() {
super();
}
public void destroy() {
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name=request.getParameter("name");
String password=request.getParameter("password");
String gender=request.getParameter("gender");
UserInfo user=new UserInfo();
user.setName(name);
user.setPassword(password);
user.setGender(gender);
request.setAttribute("user",user);
request.getRequestDispatcher("main.jsp").forward(request, response);
}
public void init() throws ServletException {}
}
info.jsp
<%@ page language="java" import="test.UserInfo" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
<div><%UserInfo user=(UserInfo)request.getAttribute("user");%>
Username:<%=user.getName()%><br/>
Password:<%=user.getPassword()%><br/>
Gender:<%=user.getGender()%>
</div>
</body>
</html>
250.
编写程序ProductFrame.java,使用Web组件来创建用户界面,将用户输入的数据插入到表
Product中。
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
public class ProductFrame extends JFrame implements ActionListener{ JButton button;
JTextArea jtx,jtx2;
Container c;
JPanel p;
public ProductFrame(){
c=this.getContentPane();
p= new JPanel();
jtx = new JTextArea(12,12);
jtx2 = new JTextArea(12,12);
button = new JButton("确定");
button.addActionListener(this);
p.add(jtx); p.add(jtx2);
p.add(button);
this.add(p);
this.setSize(500, 400);
this.setVisible(true); }
public void actionPerformed(ActionEvent e)
{ if(e.getSource() == button){
jtx2.setText(jtx.getText()); jtx.setText("");
}
}
public static void main(String args[]){
ProductFrame m =new ProductFrame();
}
251.
使用自定义标签实现加法和减法的运算。
package test;
public class Calculate {
public static String add(String a,String b){
String cc = "";
try{
int c = Integer.parseInt(a)+Integer.parseInt(b);
cc=""+c;
}catch(Exception e){
e.printStackTrace();
}
return cc;
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<jsp-config>
<taglib>
<taglib-uri>/ites</taglib-uri>
<taglib-location>/WEB-INF/tag/one.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>
testTag.tld
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<description>自定义标签</description>
<tlib-version>1.0</tlib-version>
<short-name>iter</short-name>
<function>
<name>add</name>
<function-class>com.Calcutate</function-class>
<function-signature>java.lang.String add(java.lang.String,java.lang.String)</function-signature>
</function>
</taglib>
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@ taglib uri="/ites" prefix="i"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
${i:add('44','9')};
</body>
</html>
252.
使用自定义标签实现两个数的乘积的运算。
import java.awt.*;
import java.awt.event.*;
class ComputerFrame extends Frame implements ActionListener
{ TextField textOne,textTwo,textResult;
Button getProblem,giveAnwser;
Label operatorLabel,message;
Teacher teacher;
ComputerFrame(String s)
{ super(s);
teacher=new Teacher();
setLayout(new FlowLayout());
textOne=new TextField(10); //创建textOne,其可见字符长是10
textTwo=new TextField(10); //创建textTwo,其可见字符长是10
textResult=new TextField(10); //创建textResult,其可见字符长是10
operatorLabel=new Label("+");
message=new Label("你还没有回答呢");
getProblem=new Button("获取题目");
giveAnwser=new Button("确认答案");
add(getProblem);
add(textOne);
add(operatorLabel);
add(textTwo);
add(new Label("="));
add(textResult);
add(giveAnwser);
add(message);
textResult.requestFocus();
textOne.setEditable(false);
textTwo.setEditable(false);
getProblem.addActionListener(this);//将当前窗口注册为getProblem的ActionEvent事件监视器
giveAnwser.addActionListener(this);//将当前窗口注册为giveAnwser的ActionEvent事件监视器
textResult.addActionListener(this);//将当前窗口注册为textResult的ActionEvent事件监视器
setBounds(100,100,450,100);
setVisible(true);
// validate();
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
}
);
}
public void actionPerformed(ActionEvent e)
{ if(e.getSource() == getProblem) //判断事件源是否是getProblem
{ int number1=teacher.giveNumberOne(100);
int number2=teacher.giveNumberTwo(100);
String operator=teacher.giveOperator();
textOne.setText(""+number1);
textTwo.setText(""+number2);
operatorLabel.setText(operator);
message.setText("请回答");
textResult.setText(null);
}
if(e.getSource() == giveAnwser) //判断事件源是否是giveAnwser
{ String answer=textResult.getText();
try{
int result=Integer.parseInt(answer);
if(teacher.getRight(result)==true)
{ message.setText("你回答正确");
}
else
{ message.setText("你回答错误");
}
}
catch(NumberFormatException ex)
{ message.setText("请输入数字字符");
}
}
textResult.requestFocus();
// validate();
}
}
public class MainClass
{ public static void main(String args[])
{ ComputerFrame frame;
frame=new ComputerFrame("算术测试");//创建窗口,其标题为:算术测试
253.
从键盘上输入10个整数,并放入一个一维数组中,然后将其前5个元素与后5个元素对换,
即:第1个元素与第10个元素互换,第2个元素与第9个元素互换,……,第5个元素与
第6个元素互换。分别输出数组原来各元素的值和对换后各元素的值。
package Test;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
int[] ints = new int[10];
System.out.println("请输入10个数字");
for (int i = 0; i < 10; i++) {
ints[i] = sca.nextInt();
}
int temp;
for (int i = 0; i < 5; i++) {
temp = ints[i];
ints[i] = ints[9 - i];
ints[9 - i] = temp;
}
for (int i = 0; i < 10; i++) {
System.out.println(ints[i]);
}
}
}
254.
编写一个程序,用一个线程显示时间,一个线程来计算(如判断一个大数是否是质数),当
质数计算完毕后,停止时间的显示。
package Test;
public class test {
public static void main(String[] args) {
ThreadA thr1 = new ThreadA(1234567841);
ThreadB thr2 = new ThreadB(thr1);
thr1.start();
thr2.start();
}
}
class ThreadA extends Thread {
private int number;
public ThreadA(int number) {
this.number = number;
}
public void run() {
if (number < 2)
System.out.println(number + "不是素数");
for (int i = 2; i * i <= number; i++) {
if (number % i == 0) {
System.out.println(number + "不是素数");
return;
}
}
System.out.println(number + "是素数");
}
}
class ThreadB extends Thread {
private Thread thread;
private long time;
public ThreadB(Thread thread) {
this.thread = thread;
time = System.currentTimeMillis();
}
public void run() {
while (!thread.isAlive()) {
try {
Thread.sleep(50);
} catch (InterruptedException e) {
}
}
System.out.println(System.currentTimeMillis() - time+"毫秒");
}
}
255.
用JavaApplication编写一个模拟的文本编辑器。给文本编辑器增设字体字号的功能。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Notepad extends JFrame{
private String fontNames[] = { "宋体", "华文行楷", "隶书" };
private String[] sizeString = new String[30];
int[] size = new int[30];
private static JTextArea displayText;
private int style;
private JScrollPane scroll;
private JComboBox styleBox;
private JComboBox fontBox;
private JComboBox sizeBox;
private JPanel toolPanel;
private int rowNumber = 0;
public Notepad(){
super( "记事本" ); //标题设置
for(int i = 0 ; i<size.length;i++){
sizeString[i] = "" + (i+5) * 2;
size[i] = (i+5)*2;
}
Container container = this.getContentPane();
container.setLayout(new BorderLayout() );
toolPanel = new JPanel();
JLabel label1 = new JLabel("字体名称");
toolPanel.add(label1);
fontBox = new JComboBox(fontNames);
fontBox.addItemListener( //事件处理
new ItemListener(){
public void itemStateChanged(ItemEvent event){
if( event.getStateChange() == ItemEvent.SELECTED){
displayText.setFont(
new Font( fontNames[fontBox.getSelectedIndex()],
displayText.getFont().getStyle(),
displayText.getFont().getSize() ) );
} //字体设置
}
}
);
toolPanel.add(fontBox);
JLabel label2 = new JLabel("字体风格");
toolPanel.add(label2);
String style_name[] = {"常规","倾斜","粗体","倾斜加粗体"};//字体风格设置
styleBox = new JComboBox(style_name);
styleBox.addItemListener( //事件处理
new ItemListener(){
public void itemStateChanged(ItemEvent event){
if( event.getStateChange() == ItemEvent.SELECTED){
if(styleBox.getSelectedIndex()==0) style = Font.PLAIN;
if(styleBox.getSelectedIndex()==1) style = Font.ITALIC;
if(styleBox.getSelectedIndex()==2) style = Font.BOLD;
if(styleBox.getSelectedIndex()==3) style = Font.ITALIC+Font.BOLD;
displayText.setFont( new Font( displayText.getFont().getName(),
style, displayText.getFont().getSize() ) );
}
}
}
);
toolPanel.add( styleBox );
JLabel label3 = new JLabel("字号");
toolPanel.add(label3);
sizeBox = new JComboBox(sizeString);
sizeBox.addItemListener(
new ItemListener(){
public void itemStateChanged(ItemEvent event){
if( event.getStateChange() == ItemEvent.SELECTED){
displayText.setFont( new Font( displayText.getFont().getName(),
displayText.getFont().getStyle(), size[sizeBox.getSelectedIndex()] ) );
}
}
}
);
toolPanel.add(sizeBox);
container.add( toolPanel, BorderLayout.NORTH );
JMenu fileMenu = new JMenu( "文件(F)" );
fileMenu.setMnemonic( 'F' );
displayText = new JTextArea();
displayText.setFont( new Font( "Serif", Font.PLAIN, 24) );
scroll = new JScrollPane( displayText,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS );
container.add( scroll, BorderLayout.CENTER );
displayText.addKeyListener(
new KeyListener(){
public void keyPressed( KeyEvent event ){
rowNumber = displayText.getLineCount();
setTitle("总共" + rowNumber + "行");
}
public void keyReleased( KeyEvent event ){}
public void keyTyped( KeyEvent event ){ }
}
);
setSize( 700, 500 );
setVisible( true );
}
public static void main( String args[] ){
Notepad application = new Notepad();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );//默认窗口关闭方式
}
}
四、操作题
242.
在下图中的九个点上,空出中间的点,其余的点上任意填入数字1至8;1的位置保持不动,
然后移动其余的数字,使1到8顺时针从小到大排列。移动的规则是:只能将数字沿线移向
空白的点。请将制作好的源文件保存为“t2.java”。
要求:
(1)分析问题,并描述你的算法设计思想。
(2)编程显示数字移动过程。
方法:首先找到1的位置;假定在A处。
如果1的下一个(B)是2,就找3;否则,
从1的下一个开始,往下找到2,假定位置在C上。
C的2到空位,C的前一个到C,......,B到B的下一个,最后,2到B,2排好。以些类推再排3,4......
关键问题在于,从1往下依次找2,3......移动时,却是反向。于是将每个数字存储于双向循环链表的
结点中。正向查找,反向移动。
public class GuardQueue{
public static void main(String[] args){
SortedCircute sc=new SortedCircute(new int[]{8,5,2,4,7,3,1,6});
int[] result=sc.sort();
for(int i=0;i<result.length;i++){
System.out.print(result[i]);
}
System.out.println();
}
}
class SortedCircute{
private Element head;
private int count;
public SortedCircute(int[] values){
count=values.length;
Element previous,next=null;
head=previous=new Element(values[0]);
for(int i=1;i<count;i++){
next=new Element(values[i]);
previous.next=next;
next.previous=previous;
previous=next;
}
next.next=head;
head.previous=next;
Element e=head;
}
public int[] sort(){
int maxSteps=count*(count+1)/2,index=0;
int[] steps=new int[maxSteps];
Element start=head;
while(start.value!=1){
start=start.next;
}
Element center=new Element(0),temp;
for(int i=1;i<count;i++){
if(start.next.value!=i+1){
for(temp=start.next.next;temp.value!=i+1;temp=temp.next);
center.previous=temp;
start.next.previous=center;
temp=center;
do{
temp.value=temp.previous.value;
steps[index++]=temp.value;
temp=temp.previous;
}while(temp!=center);
start.next.previous=start;
}
start=start.next;
}
int[] result=new int[index];
System.arraycopy(steps,0,result,0,index);
return result;
}
public String toString(){
String result=String.valueOf(head.value);
Element e=head.next;
for(int i=1;i<count;i++){
result+="-"+String.valueOf(e.value);
}
return result;
}
class Element{
Element next,previous;
int value;
public Element(int value){
this.value=value;
}
}
}
243.
编写一个Java应用程序,对于给定的一个字符串的集合,格式如:{aaa bbb ccc}, {bbb
ddd},{eee fff},{ggg},{ddd hhh} 要求将其中交集不为空的集合合并,要求合并完成后
的集合之间无交集,例如上例应输出:{aaa bbb ccc ddd hhh},{eee fff}, {ggg} 请将制作
好的源文件保存为“t1.java”。
(1)分析问题,描述你解决这个问题的思路、处理流程,以及算法复杂度。
(2)编程实现题目要求的集合合并。
(3)描述可能的改进(改进的方向如效果,算法复杂度,性能等等)。
public class Interest2{
static ArrayList<StringSet> listSup = new ArrayList<StringSet>();
public void init (String... str) {
listSup.add(new StringSet(str));
}
public static void main(String args[]) {
Interest2 t = new Interest2();
//初始化
t.init("aaa","bbb","ccc");
t.init("eee","fff");
t.init("ggg");
t.init("ddd","hhh");
t.init("bbb","ddd");
//把交集不为空的集合合并
boolean flag = false;//标记是否有合并
for(int i = 0; i < listSup.size() - 1; i++) {
for (int j = i + 1; j < listSup.size(); j++) {
if (listSup.get(i).comp(listSup.get(j))) {
listSup.get(i).combine(listSup.get(j));//合并到get(i)中
listSup.remove(j);
flag = true;
}
}
if (flag) {//有合并下一次要从listSup的第一个元素开始从新比较
i = -1;
flag = false;
}
}
//输出结果
Iterator<StringSet> it = listSup.iterator();
it.hasNext();
while (true) {
System.out.print(it.next());
if (it.hasNext())
System.out.print(",");
else
break;
}
}
}
class StringSet {
ArrayList<String> listString = new ArrayList<String>();
static String theSameString = "";
//提供数组参数的构造器
public StringSet(String[] strs) {
for (int i = 0; i < strs.length; i++) {
listString.add(strs[i]);
}
}
//比较两个StringSet中是否有相同的元素,有还回true
public boolean comp (StringSet strSet) {
for (int j = 0; j < this.listString.size(); j++) {
for (int i = 0; i < strSet.listString.size(); i++) {
if (this.listString.get(j).equals(strSet.listString.get(i))) {
theSameString = this.listString.get(j);
return true;
}
}
}
return false;
}
//结合两个StringSet,不能含相同的元素
public void combine (StringSet strSet) {
this.listString.addAll(strSet.listString);
while (this.listString.contains(StringSet.theSameString)) {//以防有多个相同的
this.listString.remove(StringSet.theSameString);
}
this.listString.add(StringSet.theSameString);
}
//打印StringSet对象
public String toString () {
Collections.sort(this.listString);//对list中的元素排序
Iterator<String> it = this.listString.iterator();
String str = "";
str += "{ ";
while (it.hasNext()) {
str += it.next() + " ";
}
str += "}";
return str;
}
}
244.
撰写一个 myString class,其中包含一个String对象,可于构造函数中通过引数来设定初值。
加入toString()和concatenate()。后者会将String对象附加于你的内部字符串尾端。请为
myString()实现clone()。撰写两个static函数,令它们都接收myString reference x引数并调
用x.concatenate(“test”)。但第二个函数会先调用clone()。请测试这两个函数并展示其不同
结果。
public class MyString implements Cloneable
{
String sourceString;
//带参数的构造函数
public MyString(String str)
{
//在构造函数中通过引用数来设定初值
this.sourceString = str;
}
/**
* 重写toString方法
*/
public String toString()
{
StringBuilder sb = new StringBuilder();
sb.append(sourceString);
sb.append(":");
return sb.toString();
}
/**
* 实现讲传入参数连接到你的字符串尾端
*
* @param str
* 传入参数
* @return 链接好的字符串
*/
public String concatenate(String str)
{
return sourceString.concat(str);
}
/**
* 克隆实现
*/
public Object clone() throws CloneNotSupportedException
{
return super.clone();
}
/**
* 克隆前
*/
public static void cloneBegin(String str)
{
MyString testString = new MyString(" Clone begin ");
String result = testString.concatenate(str);
System.out.println(testString.toString() + result);
}
/**
* 克隆后
*/
public static void cloneAfter(String str) throws CloneNotSupportedException
{
MyString testString = new MyString(" Clone begin ");
MyString testStringClone = (MyString)testString.clone();
String result = testStringClone.concatenate(str);
System.out.println(testStringClone.toString()+result);
}
/**
* @param args
*/
public static void main(String[] args)
{
cloneBegin("test");
try
{
cloneAfter("testClone");
} catch (CloneNotSupportedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
245.
为Thread撰写两个子类,其中一个的run()在启动后取得第二个Thread object reference,然
后调用wait()。另一个子类的run()在过了数秒之后调用notifyAll(),唤醒第一个线程,使第
一个线程可以印出消息。
MasterThread.java
public class MasterThread extends Thread {
public static void main(String[] args) {
MasterThread mt = new MasterThread();
mt.start();
}
public void run() {
SlaverThread st = new SlaverThread(this);
st.start();
synchronized (this) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("MasterThread say hello!");
}
}
SlaverThread.java
public class SlaverThread extends Thread {
private Thread mt = null;
public SlaverThread(Thread mt) {
this.mt = mt;
}
public void run() {
try {
System.out.println("SlaverThread started..");
sleep(3000);
System.out.println("3 second past");
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("notify MasterThread");
synchronized (mt) {
mt.notifyAll();
}
}
}
246.
编写一个简单的Web程序,根据当前时间的不同,在JSP页面上显示“上午”、“下午”。
只要在jsp页面中假如如下代码就行
<%
if(new Date().getHours()>=0 && new Date().getHours()<=12){//看看当前时间是在0点到中午12点之间
%>
上午好
<%
}
else{
%>
下午好
<%
}
%>
247.
编写一个简单的Web程序,根据表彰中的用户名,让合法的用户登入主页面,使用session
对象将用户名显示在主页面中,不合法的用户将回发无效页面。
login.jsp
<%@ page language="java" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Login page</title>
</head>
<body>
<div>
<form action="login.servlet" method="post">
<fieldset style="width:50px;">
username:<input type="text" name="name" /><br>
password:<input type="password" name="password" />
<input type="submit" value="submit" />
</fieldset>
</form>
</div>
</body>
</html>
main.jsp
<%@ page language="java" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
<div>Welcome:<%=session.getAttribute("name")%></div>
</body>
</html>
LoginServlet
package test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
public LoginServlet() {
super();
}
public void destroy() {
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name=request.getParameter("name");
String password=request.getParameter("password");
if(null!=name&&"admin".equals(name)&&null!=password&&"admin".equals(password)){
request.getSession().setAttribute("name", name);
request.getRequestDispatcher("main.jsp").forward(request, response);
}
else{
response.sendRedirect("login.jsp");
}
}
public void init() throws ServletException {}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>test.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>login.servlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
248.
使用JSP+JavaBean的模式开发一个Web程序,在JSP页面中实例化一个JavaBean,然后
再把数据显示在页面中。
package mysql;
import java.sql.*;
public class Test{
private String user = "root";
private String pass = "soft5";
private String url = "";
private Connection con = null;
private Statement stmt = null;
private ResultSet rs = null;
public Test(){}
public void setUser (String user){
this.user = user;
}
public void setPass (String pass){
this.pass = pass;
}
public void BulidCon(){
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
url ="jdbc:mysql://localhost:3306/bookshop?useUnicode=true&characterEncoding=UTF-8";
con= DriverManager.getConnection(url,user,pass);
stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
}catch (Exception e){
System.out.println(e.getMessage());
}
}
public ResultSet selectLog(String sql){
try{
BulidCon();
rs = stmt.executeQuery(sql);
}catch(Exception e){
System.out.println(e.getMessage());
}
return rs;
}
public void updateLog(String sql){
try{
BulidCon();
stmt.executeUpdate(sql);
}catch (Exception e){
System.out.println(e.getMessage());
}
}
public void close(){
try{
con.close();
stmt.close();
}catch (SQLException e){
System.out.println(e.getMessage());
}
}
}
数据插入
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*;"%>
<jsp:useBean id="ss" class="mysql.Test" scope="page"/>
<html>
<body>
<%
String sql="insert into books (id, bookName) values ('id','book')";
ss.updateLog(sql);
%>
</body>
</html>
数据查询
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*;"%>
<jsp:useBean id="ss" class="mysql.text" scope="page"/>
<html>
<body>
<%
ResultSet rs = null;
rs = ss.selectLog("select * from books");
while(rs.next()){
String bookId = rs.getString("ID");
String bookName = rs.getString("bookName");
out.print(bookId);
out.print(bookName);
}
%>
</body>
</html>
249.
使用JSP+Servlet+JavaBean的模式开发一个Web程序,将表单提交的数据显示在下一页面
中。
package test;
public class UserInfo {
private String name;
private String password;
private String gender;
public UserInfo(){}
public UserInfo(String name,String password,String gender){
this.name=name;
this.password=password;
this.gender=gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
InfoServlet
package test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class InfoServlet extends HttpServlet {
public InfoServlet() {
super();
}
public void destroy() {
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name=request.getParameter("name");
String password=request.getParameter("password");
String gender=request.getParameter("gender");
UserInfo user=new UserInfo();
user.setName(name);
user.setPassword(password);
user.setGender(gender);
request.setAttribute("user",user);
request.getRequestDispatcher("main.jsp").forward(request, response);
}
public void init() throws ServletException {}
}
info.jsp
<%@ page language="java" import="test.UserInfo" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
<div><%UserInfo user=(UserInfo)request.getAttribute("user");%>
Username:<%=user.getName()%><br/>
Password:<%=user.getPassword()%><br/>
Gender:<%=user.getGender()%>
</div>
</body>
</html>
250.
编写程序ProductFrame.java,使用Web组件来创建用户界面,将用户输入的数据插入到表
Product中。
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
public class ProductFrame extends JFrame implements ActionListener{ JButton button;
JTextArea jtx,jtx2;
Container c;
JPanel p;
public ProductFrame(){
c=this.getContentPane();
p= new JPanel();
jtx = new JTextArea(12,12);
jtx2 = new JTextArea(12,12);
button = new JButton("确定");
button.addActionListener(this);
p.add(jtx); p.add(jtx2);
p.add(button);
this.add(p);
this.setSize(500, 400);
this.setVisible(true); }
public void actionPerformed(ActionEvent e)
{ if(e.getSource() == button){
jtx2.setText(jtx.getText()); jtx.setText("");
}
}
public static void main(String args[]){
ProductFrame m =new ProductFrame();
}
251.
使用自定义标签实现加法和减法的运算。
package test;
public class Calculate {
public static String add(String a,String b){
String cc = "";
try{
int c = Integer.parseInt(a)+Integer.parseInt(b);
cc=""+c;
}catch(Exception e){
e.printStackTrace();
}
return cc;
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<jsp-config>
<taglib>
<taglib-uri>/ites</taglib-uri>
<taglib-location>/WEB-INF/tag/one.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>
testTag.tld
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<description>自定义标签</description>
<tlib-version>1.0</tlib-version>
<short-name>iter</short-name>
<function>
<name>add</name>
<function-class>com.Calcutate</function-class>
<function-signature>java.lang.String add(java.lang.String,java.lang.String)</function-signature>
</function>
</taglib>
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@ taglib uri="/ites" prefix="i"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
${i:add('44','9')};
</body>
</html>
252.
使用自定义标签实现两个数的乘积的运算。
import java.awt.*;
import java.awt.event.*;
class ComputerFrame extends Frame implements ActionListener
{ TextField textOne,textTwo,textResult;
Button getProblem,giveAnwser;
Label operatorLabel,message;
Teacher teacher;
ComputerFrame(String s)
{ super(s);
teacher=new Teacher();
setLayout(new FlowLayout());
textOne=new TextField(10); //创建textOne,其可见字符长是10
textTwo=new TextField(10); //创建textTwo,其可见字符长是10
textResult=new TextField(10); //创建textResult,其可见字符长是10
operatorLabel=new Label("+");
message=new Label("你还没有回答呢");
getProblem=new Button("获取题目");
giveAnwser=new Button("确认答案");
add(getProblem);
add(textOne);
add(operatorLabel);
add(textTwo);
add(new Label("="));
add(textResult);
add(giveAnwser);
add(message);
textResult.requestFocus();
textOne.setEditable(false);
textTwo.setEditable(false);
getProblem.addActionListener(this);//将当前窗口注册为getProblem的ActionEvent事件监视器
giveAnwser.addActionListener(this);//将当前窗口注册为giveAnwser的ActionEvent事件监视器
textResult.addActionListener(this);//将当前窗口注册为textResult的ActionEvent事件监视器
setBounds(100,100,450,100);
setVisible(true);
// validate();
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
}
);
}
public void actionPerformed(ActionEvent e)
{ if(e.getSource() == getProblem) //判断事件源是否是getProblem
{ int number1=teacher.giveNumberOne(100);
int number2=teacher.giveNumberTwo(100);
String operator=teacher.giveOperator();
textOne.setText(""+number1);
textTwo.setText(""+number2);
operatorLabel.setText(operator);
message.setText("请回答");
textResult.setText(null);
}
if(e.getSource() == giveAnwser) //判断事件源是否是giveAnwser
{ String answer=textResult.getText();
try{
int result=Integer.parseInt(answer);
if(teacher.getRight(result)==true)
{ message.setText("你回答正确");
}
else
{ message.setText("你回答错误");
}
}
catch(NumberFormatException ex)
{ message.setText("请输入数字字符");
}
}
textResult.requestFocus();
// validate();
}
}
public class MainClass
{ public static void main(String args[])
{ ComputerFrame frame;
frame=new ComputerFrame("算术测试");//创建窗口,其标题为:算术测试
253.
从键盘上输入10个整数,并放入一个一维数组中,然后将其前5个元素与后5个元素对换,
即:第1个元素与第10个元素互换,第2个元素与第9个元素互换,……,第5个元素与
第6个元素互换。分别输出数组原来各元素的值和对换后各元素的值。
package Test;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
int[] ints = new int[10];
System.out.println("请输入10个数字");
for (int i = 0; i < 10; i++) {
ints[i] = sca.nextInt();
}
int temp;
for (int i = 0; i < 5; i++) {
temp = ints[i];
ints[i] = ints[9 - i];
ints[9 - i] = temp;
}
for (int i = 0; i < 10; i++) {
System.out.println(ints[i]);
}
}
}
254.
编写一个程序,用一个线程显示时间,一个线程来计算(如判断一个大数是否是质数),当
质数计算完毕后,停止时间的显示。
package Test;
public class test {
public static void main(String[] args) {
ThreadA thr1 = new ThreadA(1234567841);
ThreadB thr2 = new ThreadB(thr1);
thr1.start();
thr2.start();
}
}
class ThreadA extends Thread {
private int number;
public ThreadA(int number) {
this.number = number;
}
public void run() {
if (number < 2)
System.out.println(number + "不是素数");
for (int i = 2; i * i <= number; i++) {
if (number % i == 0) {
System.out.println(number + "不是素数");
return;
}
}
System.out.println(number + "是素数");
}
}
class ThreadB extends Thread {
private Thread thread;
private long time;
public ThreadB(Thread thread) {
this.thread = thread;
time = System.currentTimeMillis();
}
public void run() {
while (!thread.isAlive()) {
try {
Thread.sleep(50);
} catch (InterruptedException e) {
}
}
System.out.println(System.currentTimeMillis() - time+"毫秒");
}
}
255.
用JavaApplication编写一个模拟的文本编辑器。给文本编辑器增设字体字号的功能。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Notepad extends JFrame{
private String fontNames[] = { "宋体", "华文行楷", "隶书" };
private String[] sizeString = new String[30];
int[] size = new int[30];
private static JTextArea displayText;
private int style;
private JScrollPane scroll;
private JComboBox styleBox;
private JComboBox fontBox;
private JComboBox sizeBox;
private JPanel toolPanel;
private int rowNumber = 0;
public Notepad(){
super( "记事本" ); //标题设置
for(int i = 0 ; i<size.length;i++){
sizeString[i] = "" + (i+5) * 2;
size[i] = (i+5)*2;
}
Container container = this.getContentPane();
container.setLayout(new BorderLayout() );
toolPanel = new JPanel();
JLabel label1 = new JLabel("字体名称");
toolPanel.add(label1);
fontBox = new JComboBox(fontNames);
fontBox.addItemListener( //事件处理
new ItemListener(){
public void itemStateChanged(ItemEvent event){
if( event.getStateChange() == ItemEvent.SELECTED){
displayText.setFont(
new Font( fontNames[fontBox.getSelectedIndex()],
displayText.getFont().getStyle(),
displayText.getFont().getSize() ) );
} //字体设置
}
}
);
toolPanel.add(fontBox);
JLabel label2 = new JLabel("字体风格");
toolPanel.add(label2);
String style_name[] = {"常规","倾斜","粗体","倾斜加粗体"};//字体风格设置
styleBox = new JComboBox(style_name);
styleBox.addItemListener( //事件处理
new ItemListener(){
public void itemStateChanged(ItemEvent event){
if( event.getStateChange() == ItemEvent.SELECTED){
if(styleBox.getSelectedIndex()==0) style = Font.PLAIN;
if(styleBox.getSelectedIndex()==1) style = Font.ITALIC;
if(styleBox.getSelectedIndex()==2) style = Font.BOLD;
if(styleBox.getSelectedIndex()==3) style = Font.ITALIC+Font.BOLD;
displayText.setFont( new Font( displayText.getFont().getName(),
style, displayText.getFont().getSize() ) );
}
}
}
);
toolPanel.add( styleBox );
JLabel label3 = new JLabel("字号");
toolPanel.add(label3);
sizeBox = new JComboBox(sizeString);
sizeBox.addItemListener(
new ItemListener(){
public void itemStateChanged(ItemEvent event){
if( event.getStateChange() == ItemEvent.SELECTED){
displayText.setFont( new Font( displayText.getFont().getName(),
displayText.getFont().getStyle(), size[sizeBox.getSelectedIndex()] ) );
}
}
}
);
toolPanel.add(sizeBox);
container.add( toolPanel, BorderLayout.NORTH );
JMenu fileMenu = new JMenu( "文件(F)" );
fileMenu.setMnemonic( 'F' );
displayText = new JTextArea();
displayText.setFont( new Font( "Serif", Font.PLAIN, 24) );
scroll = new JScrollPane( displayText,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS );
container.add( scroll, BorderLayout.CENTER );
displayText.addKeyListener(
new KeyListener(){
public void keyPressed( KeyEvent event ){
rowNumber = displayText.getLineCount();
setTitle("总共" + rowNumber + "行");
}
public void keyReleased( KeyEvent event ){}
public void keyTyped( KeyEvent event ){ }
}
);
setSize( 700, 500 );
setVisible( true );
}
public static void main( String args[] ){
Notepad application = new Notepad();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );//默认窗口关闭方式
}
}
相关推荐
本资源包“Java考证历年试题以及参考答案”汇聚了过往的考试题目和官方给出的答案,为准备参加Java相关资格认证考试的学习者提供了宝贵的复习资料。 首先,Java考证涵盖了多个层次,包括Oracle Certified Associate...
"Java考证历年试题及参考答案"这个资源对于准备参加Java认证考试的学习者来说无疑是一份宝贵的资料。下面,我们将深入探讨Java考证的相关知识点,以及如何有效地利用这些试题和答案进行复习。 1. **Java基础知识** ...
【基于Java开发的考证通题库微信小程序】是一款利用Java技术构建的教育应用,专为备考各类证书考试的用户设计。这款小程序集成了丰富的题库资源,覆盖多种考试类别,旨在帮助用户通过在线学习和练习,提高考试通过率...
这些题目来源于2008年至2010年间针对程序员考证的考试,主要涵盖了C语言的相关知识。这些试题包含了选择题和程序填空题,分别对应上午和下午的考试部分。通过对这些答案的分析,我们可以提炼出以下几个重要的知识点...
2. 编程语言:根据不同的考试,可能会涵盖C、C++、Java、Python等主流编程语言的语法、数据类型、控制结构、函数、类和对象等概念。 3. 数据结构与算法:这是程序员能力的重要衡量标准,可能包括数组、链表、栈、...
这份"ACCP5.0 Y2考证复习题(笔试+机试、附答案)"是为帮助学员准备这个阶段的认证考试而准备的资料,包括了笔试和机试两部分的练习题目以及相应的参考答案。 笔试部分通常涉及理论知识的检验,可能涵盖以下几个...
1. **C#基础语法**:C#语法与C++和Java类似,包括变量声明、数据类型、控制结构(如if语句、for循环、while循环)、函数定义等。掌握这些基础是学习C#的第一步。 2. **类与对象**:C#是面向对象的语言,因此理解类...
因此,此题的答案是 A(正确)。 **7. 表单应用案例** - **知识点**:Dreamweaver 中表单的应用场景。 - **解析**:表单常用于用户注册(A)、网上订购(C)、用户登录(D)等场景。但不适用于直接浏览数据库...
正确答案是 C. `res/raw`。 - **解析**:`res/raw` 目录用于存放原始资源文件,如二进制文件。而其他选项,如 A. `res/layout` 是用于存放布局文件;B. `res/menu` 用于存放菜单资源文件;D. `res/values` 用于存放...
Java OCJP(原SCJP)真题,有140多道,是我去参加认证培训的时候的资料。这份没有答案,很适合用来测试自己会多少。得出自己所处的水平。如果你全部弄懂了,也就差不多可以去参加考试了。 答案解析在我上传的另外一...
### SCJP 考试题及答案解析 #### 题目一:对象转换与类型检查 **题目描述:** 给出以下代码: ```java public class Test { public static void main(String args[]) { class Foo { public int i = 3; } ...
在标签“JAVA考证、OCA、OCJP”中,可以看出,这是一份专为准备Java考证的考生而设计的学习资源。OCA(Oracle Certified Associate)和OCJP(Oracle Certified Professional Java Programmer)都是Oracle官方对Java...
编程题可能涉及到C++、Java、Python等主流编程语言,考察语法、逻辑和调试技能;分析题则可能给出一个具体的问题场景或需求,要求考生设计出合理的软件解决方案。 在备考过程中,考生可以通过做这些真题来检测自己...
- 推荐在“普通”视图下做题,以减少页面变化对阅读的影响。 - 可通过Word的拆分条功能将窗口分为上下两部分,便于对照阅读和答题。 - 如遇到技术问题,可参考“word 使用技巧”专帖或向论坛提问。 3. 文档特点...
该认证考试共包含六套模拟试题,每套约60题,总计约360题。题目涵盖鲲鹏平台基础知识、开发实践、部署运维等多个方面。考生需对上述知识点有深入理解和实践能力,才能顺利通过考试。 通过《鲲鹏应用者开发HCIA题库...
### SCJP(OCJP)考证知识点解析 #### 一、Java标识符规则 **知识点概述:** 本题涉及Java中的标识符命名规则。在Java中,变量名必须遵循一定的规则和约定。 **详细解析:** - **选项A**: `String#name="JaneDoe";`...
在程序员的考证道路上,了解并掌握考试大纲是至关重要的第一步。07、08、09年的程序员真题试卷不仅提供了实战演练的机会,更蕴含了丰富的知识点,帮助考生深入理解编程语言、数据结构、算法设计、软件工程等核心领域...
《Java语言案例教程》(第2版)是作者多年从事教学和研究的心得之作,本书则是根据原教材精心编写的习题集。本书的习题类型丰富,分为基础练习和程序设计题。基础题中还细分为判断题、选择题、填空题和简述题。为了...
- **SCJP** (Sun Certified Java Programmer) 是 Sun Microsystems 提供的一项认证,旨在测试和验证考生对于 Java 编程语言的理解和掌握程度。 - 2011 年的新题库反映了该时期 Java 技术的发展水平,对于备考 SCJP ...