7.String类的方法转换解析:public class Convert{ public static void main(String[] args){ String a="StrIng"; System.out.println(a.toUpperCase()); System.out.println(new String(a.toLowerCase())); }}8.使用String类的concat方法:例:public class TestConcat{ public static void main(String[] args){ String a = new String("raoliv->"); String b = new String(""); System.out.println(a.concat(b)); }}9.试利用java.util.Date类继承声明实现MyDate类解析: 10.略11.编写实现从两字符串找出最长的相同字符序列的代码解析:得到字符串str1,str2后,有一个为空则子列为空如果都不为空,开始下面的步骤求得两列的长度分别为n1,n2。
动态生n2行n1列矩阵(二维数组)取str2中每个元素(记位置为i)与str1中元素(记位置为j)逐个比较,如果相等则为矩阵中相应行列坐标的元素赋值为1,否则为0(可用循环嵌套完成)比如str1(abc0cbad) str2(cba1abc)两串的话,可以得到如图所示矩阵然后,不难看出,要进行如下步骤定义strax,用来记录最大子列中元素个数定义数组l[n2],用来记录最大子列的首字符地址(因为可能有不同最大子列,故用数组,而不是单个变量)判断矩阵中每一个元素,是否为1,如果是则记下此时行地址到l数组,然后判断相对于这个元素的下一行下一列的元素是否为1,如果是则继续判断,一直到为0记下此次判断(即一个while循环)中“1”的个数n,存入变量strax 对于矩阵中的每一个元素都这么判断,如果判断中n的值大于strax那么把n付给strax,同时把这个子列的首地址付给l[0],l[0]后面的元素全赋值为-1如果,某次判断得到的n与strax相同,即有相同最大子列,那么把它的首地址存入l数组的下一个位置 当这个矩阵的每一个元素都判断完毕后,会得到strax,和数组l,然后用循环做如下输出过程: 依次以l数组中的每个元素为首地址,输出str2字符串中以相应序号开头的strax个字符,那么完成所有最大子列的输出。
例子:输入:aabcbcbbcabcbac输出:abcb public class test1{ public static void main(String[] args){ int max = 0; int current = 0; String str1 = new String("aabcbcb"); String str2 = new String("bcabcbac"); int len1 = str1.length(); int len2 = str2.length(); int arr[][]; arr = new int[len1][len2]; //初始化数组 for(int i= 0; i< str1.length(); i++) for(int j= 0; j< str2.length(); j++) arr[i][j] = 0; for(int k = 0; k< str1.length(); k++){ char a = str1.charAt(k); for(int l= 0; l< str2.length(); l++){ char b = str2.charAt(l); if (a==b){ arr[k][l]=1; }else{ arr[k][l] = 0; } } } for(int i= 0; i< str1.length(); i++) for(int j= 0; j< str2.length(); j++){ if(arr[i][j] == 1&&arr[i-1][j-1] ==1) arr[i][j] = arr[i-1][j-1] + 1; if(max < arr[i][j]){ max = arr[i][j]; current = i; } if(max == 0){ System.out.println("没有找到。
"); }else{ System.out.println(str1.substring(current+1-max,max)); } } }}12.整理字符串将前后空白删去并把中间的多个空白保留一个解析:用String类的split 方法拆分再连接然后用trim方法去掉前后空格public class test2{ public static void main(String[] args) { String s = " hello raoliv-> Welcome to "; System.out.println("原来为:" + s); s= s.trim(); s = s.replaceAll("\\s+","#"); String ss[] = s.split("#"); System.out.print("替换后:"); for(int i=0;i
AWT依赖于平台绘制用户界面组件,而Swing有自己的机制2.什么是组件对象?什么是容器?容器和其它类型的组件有什么不同?答:略P863.略4.略5.略6.编一小应用程序,小应用程序窗口有一个按钮,当点击时点击的次数会显示在按钮上解析:先用javac编译成class字节码,再在当前文件夹下建一个html页面源文件如下.import java.applet.*;import javax.swing.*;import java.awt.event.*;public class Praxis5_6 extends Applet implements ActionListener{ int num=0; JButton button1; public void init() { setSize(300,200); button1=new JButton(""+num); button1.addActionListener(this); add(button1); } public void actionPerformed(ActionEvent e) { button1.setText(""+num++); } }/*html页面
*/7.创建一个有文本框和三个按钮的程序当按下某个按钮时使不同的文字显示在文本框中。
解析:import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Praxis5_7{ public static void main(String[] args){ ButtonDemo buttondemo = new ButtonDemo(); }}class ButtonDemo extends JFrame implements ActionListener{ JTextField text; JButton button1,button2; ButtonDemo() { super("Praxis5_8"); Container con=this.getContentPane(); setLayout(new FlowLayout()); text=new JTextField(10); button1 = new JButton("raoliv"); button2 = new JButton("欢迎来到"); button1.addActionListener(this); button2.addActionListener(this); con.add(text); con.add(button1); con.add(button2); setSize(300,200); setVisible(true); } public void actionPerformed(ActionEvent e){ if(e.getSource() == button1) text.setText(button1.getLabel()); else if(e.getSource() == button2) text.setText(button2.getLabel()); }}8.编写一个有两个文本狂的小应用程序,在第一个文本框输入英文单词,第二个文本框自动显示汉语解释,或在第一个文本框输入单词,第二个文本框显示英语。
解析:只增加了一个单词raoliv->饶林 饶林->raoliv 可以多写几个.import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Praxis5_8{ public static void main(String[] args){ MyWindow a = new MyWindow(); a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}class MyWindow extends JFrame implements ActionListener{ JTextField text1,text2; JLabel label; MyWindow() { super("Praxis5_8"); setLayout(new FlowLayout()); text1 = new JTextField(10); text2 = new JTextField(10); text2.setEditable(false); label = new JLabel("输入字符:"); this.getContentPane().add(label); this.getContentPane().add(text1); this.getContentPane().add(text2); text1.addActionListener(this); setSize(400,100); setVisible(true); validate(); } public void actionPerformed(ActionEvent e){ String word = text1.getText(); if(word.equals("raoliv")) text2.setText("饶林"); else if(word.equals("饶林")) text2.setText("raoliv"); else text2.setText("没有找到"); }}9.编写一个有标签、有文本框、文本区和两个按钮的小应用程序。
import java.util.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Praxis5_9{ public static void main(String[] args){ MyWindow a = new MyWindow(); a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}class MyWindow extends JFrame implements ActionListener{ JLabel label; JTextField text; JButton button1,button2; JTextArea textArea; JPanel pan1,pan2; MyWindow(){ super("Praxis5_9"); setSize(300,300); setLayout(new FlowLayout()); label = new JLabel(); text = new JTextField(15); textArea = new JTextArea(10,10); button1 = new JButton("SUM"); button2 = new JButton("AVG"); pan1 = new JPanel(); pan2 = new JPanel(); JScrollPane jsp = new JScrollPane(textArea); jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); jsp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); getContentPane().add(jsp); getContentPane().add(button1); getContentPane().add(button2); getContentPane().add(label); getContentPane().add(text); button1.addActionListener(this); button2.addActionListener(this); setVisible(true); validate(); } public void actionPerformed(ActionEvent e){ String s = textArea.getText(); StringTokenizer t = new StringTokenizer(s,"'\n',;. "); int n = t.countTokens(); int a[] = new int[n]; for(int i = 0; i< n; i++){ a[i] = Integer.parseInt(t.nextToken()); } if(e.getSource() == button1){ label.setText("输入数的和为:"); int sum = 0; for(int i = 0; i< n; i++){ sum = sum+ a[i]; } text.setText("" + sum); }else if(e.getSource() == button2){ label.setText("输入数平均值为:"); int sum = 0; for(int i = 0; i< n; i++){ sum = sum+ a[i]; } text.setText("" + sum/n); } }}10.布局如下:import java.awt.*;import javax.swing.*;public class Praxis5_10{ public static void main(String args[]){ window win=new window(); win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}class window extends JFrame{ JScrollPane jsp1,jsp5; JPanel panel2,panel3,panel4,panel6; JTextArea jsp1_Text,jsp5_Text; JLabel panel2_Label; JTextField panel2_Field; JPanel panel3_p1,panel3_p2,panel4_p1,panel4_p2,panel4_p3,panel6_p1,panel6_p2,panel6_p3; JButton panel4_b1,panel4_b2; window(){ super("Praxis5_10"); setSize(600,120); setLayout(new GridLayout(2,3)); setVisible(true); jsp1_Text=new JTextArea("文本区(带滚动条)"); JScrollPane jsp1=new JScrollPane(jsp1_Text); panel2=new JPanel(); panel2_Label=new JLabel("标签"); panel2_Field=new JTextField("文本框"); panel3=new JPanel(); panel3_p1=new JPanel(); panel3_p2=new JPanel(); panel4=new JPanel(); panel4_b1=new JButton("按钮"); panel4_b2=new JButton("按钮"); panel4_p1=new JPanel(); panel4_p2=new JPanel(); panel4_p3=new JPanel(); jsp5_Text=new JTextArea("文本区(带滚动条)"); JScrollPane jsp5=new JScrollPane(jsp5_Text); panel6=new JPanel(); panel6_p1=new JPanel(); panel6_p2=new JPanel(); panel6_p3=new JPanel(); jsp1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); jsp1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); jsp5.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); jsp5.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); panel2.setLayout(new GridLayout(2,1)); panel2.add(panel2_Label);panel2.add(panel2_Field); panel3.setLayout(new GridLayout(1,2)); panel3_p1.setBackground(Color.BLACK); panel3_p2.setBackground(Color.BLUE); panel3.add(panel3_p1);panel3.add(panel3_p2); panel4.setLayout(new GridLayout(1,3)); panel4_p1.setLayout(new GridLayout(2,1)); panel4_p1.add(panel4_b1);panel4_p1.add(panel4_b2); panel4_p2.setBackground(Color.BLUE); panel4_p3.setBackground(Color.BLACK); panel4.add(panel4_p1);panel4.add(panel4_p2);panel4.add(panel4_p3); panel6.setLayout(new GridLayout(1,3)); panel6_p1.setBackground(Color.RED); panel6_p2.setBackground(Color.GREEN); panel6_p3.setBackground(Color.orange); panel6.add(panel6_p1);panel6.add(panel6_p2);panel6.add(panel6_p3); add(jsp1); add(panel2); add(panel3); add(panel4); add(jsp5); add(panel6); validate(); }}第六章图形界面设计(二)1.设计一个面板,该面板中有四个运动项目选择框和一个文本区。
当某个选择项目被选中时,在文本区中显示该选择项目解析:选多个import java.util.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;class panel extends JPanel{ JCheckBox box1,box2,box3,box4,box5; //ButtonGroup g; JTextArea text; panel(){ setLayout(new GridLayout(1,6)); //g = new ButtonGroup(); box1 = new JCheckBox("高丽华"); box2 = new JCheckBox("饶林"); box3 = new JCheckBox("谌凯"); box4 = new JCheckBox("韩伟虎"); box5 = new JCheckBox("梁继杰"); text = new JTextArea(5,5); //g.add(box1);g.add(box2);g.add(box3);g.add(box4);g.add(box5); add(box1); add(box2); add(box3);add(box4);add(box5); add(text); }}class MyWindow extends JFrame implements ItemListener{ panel panel1; MyWindow(){ super("Praxis6_1"); Container con = this.getContentPane(); con.setLayout(new FlowLayout()); setSize(400,100); panel1 = new panel(); add(panel1); panel1.box1.addItemListener(this); panel1.box2.addItemListener(this); panel1.box3.addItemListener(this); panel1.box4.addItemListener(this); panel1.box5.addItemListener(this); setVisible(true); pack(); } public void itemStateChanged(ItemEvent e){ if(e.getItemSelectable()== panel1.box1) panel1.text.append("高丽华"+ "\n"); else if(e.getItemSelectable()== panel1.box2) panel1.text.append("饶林"+ "\n"); else if(e.getItemSelectable()== panel1.box3) panel1.text.append("谌凯"+ "\n"); else if(e.getItemSelectable()== panel1.box4) panel1.text.append("韩伟虎"+ "\n"); else if(e.getItemSelectable()== panel1.box5) panel1.text.append("梁继杰"+ "\。