综合应用题下面是一个Applet程序,其功能是在图形用户界面中实现打印任意行数的杨辉三角形,编写一个含有整型形式参数的方法,此方法打印杨辉三角形,打印的行数由形式参数指定。编写Applet程序接受用户输入的整数,作为实际参数传递并调用上面的方法,要求图形用户界面上包含一个文本区作为输入参数的入口,一个带有纵向滚动条的文本面板作为输出打印结果的区域,一个按钮,点击则完成打印。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。程序运行结果如下:
import javax.swing.*;import java.awt.*;import java.awt.event.*;/* */public class ex11_3 extends JApplet { private JButton jb = new JButton("OK"); private JTextPane jtp = new JTextPane(); private JTextField jtf=new JTextField(8); private int n=15; public void init() { jb.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){n=jtf.getText();jtp.setText("");for(int i = n-1; i>=0;i--){String s = "";for(int j = 0; j < i; j++) s += " "; for(int j = 0; j < n; j++) s += "* ";jtp.setText(s+"\n"); }} }); Container cp = getContentPane(); cp.add(BorderLayout.NORTH,jtf); cp.add(BorderLayout.CENTER,new JScrollPane(jtp)); cp.add(BorderLayout.SOUTH, jb); } public static void main(String[] args) { ex11_3 obj11_3=new ex11_3();String str = obj11_3.getClass().toString(); if(str.indexOf("class") != -1) str = str.substring(6); JFrame frm = new JFrame(str); frm.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(0); } });frm.getContentPane().add(obj11_3);frm.setSize(300, 500);frm.setVisible(true); }}ex11_3.html
参考答案:n=Integer.parseInt(jtf.getText())int j = i; j < n; j++jtp.getText()+s+"\n"
解析:本题主要考查swing图形用户界面设计和Applet窗口相结合解决一些实际问题的综合应用。解题关键是熟悉swing的基本构件库,包括JFrame, JTextPane, JButton以及swing的事件机制,还需要熟悉swing和Applet应用相结合的程序设计方法,并且要会设计一些解决简单问题的算法,杨辉三角形就是一例。本题中,第一处,对象jtf调用方法getText()得到的是文本面板中的字符串类型的数据,而n是整形数据类型,因此需要做数据类型转换;第二处,循环变量j应该从外层循环变量i开始一直到n,否则输出的"*"数目不变;第三处,应该在已有的输出结果之上在输出一行新的串,因此需要加上jtp.getText()。