第一篇:java實驗報告實驗2答案
互聯網軟件應用與開發實驗指導書
實驗二 熟悉Applet,GUI編程
實驗目的:
本實驗旨在鞏固同學們對上課所講Applet,異常處理,java的控制加深理解,圖形用戶界面基本組件窗口、按鈕、文本框、選擇框、滾動條等的使用方法,對java的語法和編程有一個更加深入的理解,為同學們以后的能夠用Java進行獨立地編寫桌面程序打下一定的基礎。了解如何使用布局管理器對組件進行管理,以及如何使用Java的事件處理機制。
實驗內容:
? 創建一個java項目,命名為experiment2。(如何創建項目參考《實驗一》的項目創建方法。)
(一)創建圖形用戶界面
圖形用戶界面(Graphic User Interface,簡稱GUI)是為方便用戶使用設計的窗口界面,在圖形用戶界面中用戶可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。組件(Component)是構成GUI的基本要素,通過對不同事件的響應來完成和用戶的交互或組件之間的交互。組件一般作為一個對象放置在容器(Container)內,容器是能容納和排列組件的對象,如Applet、Panel(面板)、Frame(窗口)等。通過容器的add方法把組件加入到容器中。
1. 在Applet中添加標簽、按鈕并使用網格布局(1)程序功能
在Applet 容器中添加組件標簽、按鈕,并使用網格布局管理器排列組件在容器中的位置。(2)編寫LX6_1.java 程序文件,源代碼如下:
import java.awt.*;import java.applet.Applet;public class LX6_1 extends Applet { Label l1;Button b1, b2, b3, b4, b5, b6;public void init(){
互聯網軟件應用與開發實驗指導書
setLayout(new GridLayout(3,3));// 設置網格布局(3 行3 列共9 個網格)l1=new Label(“標簽1”);b1 = new Button(“按鈕1”);b2 = new Button(“按鈕2”);b3 = new Button(“按鈕3”);b4 = new Button(“按鈕4”);add(l1);add(b1);add(b2);add(b3);add(new Label());add(b4);add(new Button(“按鈕5”));add(new Button(“按鈕6”));add(new Label(“標簽2”));} }(3)編譯程序LX6_1.java。
(4)編寫顯示Applet 的頁面文件LX6_1.html,在瀏覽器顯示結果如圖2.1 所示。
圖2.1
2. 在面板中添加組件
(1)程序功能:在Applet 中添加面板容器,并分別在Applet、面板容器中添加組件并使用不同的布局管理方式。
(2)編寫LX6_2.java 程序文件,源代碼如下。
import java.awt.*;import java.awt.Color;import java.applet.Applet;public class LX6_2 extends Applet { public void init()
互聯網軟件應用與開發實驗指導書
{ //設置最底層的 Applet 容器為順序布局 setFont(new Font(“Arial”,Font.PLAIN,20));Label l=new Label(“這是最底層的 Applet 容器中的標簽”,Label.CENTER);add(l);Panel panel1=new Panel();add(panel1);panel1.setBackground(Color.blue);panel1.setForeground(Color.red);panel1.setLayout(new BorderLayout());//設置邊界布局 panel1.add(“North”, new Button(“北”));panel1.add(“South”, new Button(“南”));panel1.add(“East”, new Button(“東”));panel1.add(“West”, new Button(“西”));panel1.add(“Center”, new Label(“這是在 Panel1 面板 中部添加的標簽”));Panel panel2=new Panel();add(panel2);panel2.setLayout(new GridLayout(3,1));//設置網格布局 Choice c=new Choice();//創建下拉式列表 c.addItem(“北京”);c.addItem(“上海”);c.addItem(“天津”);Label l1=new Label(“這是在 Panel2 面板中的標簽”);Button b1=new Button(“Panel2 中的按鈕”);panel2.setBackground(Color.green);panel2.add(l1);panel2.add(b1);panel2.add(c);} }(3)編譯程序LX6_2.java。
(4)編寫顯示Applet 的頁面文件LX6_2.html,在瀏覽器顯示結果如圖6.2 所示。
互聯網軟件應用與開發實驗指導書
圖2.2
3、編寫程序實現下圖功能。
(二)了解事件處理機制
在圖形用戶界面中,程序和用戶的交互是通過組件響應各種事件來實現的。例如,用戶單擊了一個按鈕,意味著發生了按鈕的單擊事件;選中下拉框中的一個選項,意味著發生了一個選項事件。在Java中能產生事件的組件叫做事件源,如按鈕。如果希望對單擊按鈕事件進行處理,可給事件源(按鈕)注冊一個事件監聽器(如包含按鈕的容器),如同簽訂了一個委托合同,當事件源發生事件時,事件監聽器就代替事件源對發生的事件進行處理,這就是所謂的委托事件處理機制。
1.單擊按鈕的事件處理程序
(1)程序功能:使用手工布局設置組件標簽、按鈕的位置,為按鈕編寫單擊事件處理方法。當用戶用鼠標單擊按鈕時,會聽到一聲響聲。
(2)編寫LX6_3.java程序文件,源代碼如下。
import java.awt.*;import java.awt.event.*;import java.applet.Applet;public class LX6_3 extends Applet implements ActionListener { // 實現動作事件監聽接口
互聯網軟件應用與開發實驗指導書
public void init(){ setLayout(null);//關閉默認的順序管理布局
Label l=new Label(“按一下按鈕可聽到響聲!”, Label.CENTER);add(l);l.setBounds(40,10,150,30);Button b=new Button(“按鈕”);add(b);b.setBounds(60,50,60,40);b.addActionListener(this);// 注冊事件源的動作監聽者 } public void actionPerformed(ActionEvent e){ //實現單擊事件接口的方法
Toolkit.getDefaultToolkit().beep();//單擊事件發生時作出的反應 } }(3)編譯程序LX6_3.java。
(4)編寫顯示Applet的頁面文件LX6_3.html,在瀏覽器顯示結果如圖3.3所示。
圖2.3 2.選擇復選框和單選框按鈕的事件處理程序
(1)程序功能:在Applte 上創建復選框、單選框、文本區域、單行文本框等組件,并實現根據用戶輸入的10進制數,選擇不同選項可轉換為2、8、16進制數。(2)編寫LX6_4.java 程序文件,源代碼如下。
import java.applet.Applet;import java.awt.*;import java.awt.event.*;public class LX6_4 extends Applet implements ItemListener { TextArea area=new TextArea(6,30);//創建文本區
互聯網軟件應用與開發實驗指導書
String Item[]={“2 進制”,“8 進制”,“16 進制”,“10 進制”};Checkbox cb[]=new Checkbox[5];Checkbox radio[]=new Checkbox[5];Label l=new Label(“輸入10 進制數”);TextField TF=new TextField(6);//創建單行文本框 public void init(){ add(l);add(TF);add(area);add(new Label(“ 請選擇進制:”));for(int i=0;i<4;i++){ cb[i]=new Checkbox(Item[i]);add(cb[i]);cb[i].addItemListener(this);} CheckboxGroup cbGroup=new CheckboxGroup();//創建單選框 add(new Label(“請選擇進制:”));for(int i=0;i<4;i++){ radio[i]=new Checkbox(Item[i],cbGroup,false);add(radio[i]);radio[i].addItemListener(this);} } public void itemStateChanged(ItemEvent e){ int x=Integer.parseInt(TF.getText());if(e.getItem()==“2 進制”)area.append(“你選擇的是”+e.getItem()+ Integer.toBinaryString(x)+“n”);if(e.getItem()==“8 進制”)area.append(“你選擇的是”+e.getItem()+ Integer.toOctalString(x)+“n”);if(e.getItem()==“16 進制”)area.append(“你選擇的是”+e.getItem()+Integer.toHexString(x)+“n”);if(e.getItem()==“10 進制”)area.append(“你選擇的是”+e.getItem()+x+“n”);} }(3)編譯程序LX6_4.java。
(4)編寫顯示Applet 的頁面文件LX6_4.html,在瀏覽器顯示結果如圖3.4 所示。
互聯網軟件應用與開發實驗指導書
圖2.4
(三)在Experiment2下創建自己的JApplet.效果類似于下圖。
圖2.5 下面是實驗二的JApplet代碼: import javax.swing.*;import java.awt.*;import java.awt.event.*;public class drawpicture extends JApplet implements ActionListener { int x=30,y=30;JButton jb1,jb2;JLabel jl1;JTextField jt1;JPanel jp;
互聯網軟件應用與開發實驗指導書
Container c;public void init(){ c=getContentPane();c.setLayout(new BorderLayout());jb1=new JButton(“點擊”);jb2=new JButton(“Reset”);jl1=new JLabel(“增加半徑值:”);jp=new JPanel();jt1=new JTextField(“20”);jp.add(jl1);jp.add(jt1);jp.add(jb1);jp.add(jb2);c.add(jp,BorderLayout.SOUTH);jb1.addActionListener(this);jb2.addActionListener(this);setSize(600,600);setVisible(true);} public void actionPerformed(ActionEvent evt){ if(evt.getSource()==jb1){ x=x+Integer.parseInt(jt1.getText());y=y+Integer.parseInt(jt1.getText());repaint();} if(evt.getSource()==jb2){ x=30;y=30;repaint();} } public void paint(Graphics g){ super.paint(g);g.drawOval(x, y, x, y);} }
(四)編輯一個程序,并用異常處理技術來處理它,比如被代碼:
import java.awt.*;
0除,數組下標溢出等。
互聯網軟件應用與開發實驗指導書
import java.awt.Color;import java.applet.Applet;public class LX6_5 extends Frame{ Label label1=new Label(“Name :”);TextField txt1=new TextField(20);
Label label2=new Label(“Favourates sports :”);Checkbox box1=new Checkbox(“Cricket”);Checkbox box2=new Checkbox(“Badmiton”);Checkbox box3=new Checkbox(“Golf”);
Label label3=new Label(“Gender”);CheckboxGroup cg=new CheckboxGroup();Checkbox r1=new Checkbox(“Male”,cg,false);Checkbox r2=new Checkbox(“Femal”,cg,false);
Label label4=new Label(“Comments :”);TextField field1=new TextField();
Button b1=new Button(“Submit”);Button b2=new Button(“Reset”);public LX6_5(String s){ super(s);setLayout(new GridLayout(10,1));Panel panel1=new Panel();add(panel1);panel1.setBackground(Color.blue);panel1.add(label1);panel1.add(txt1);Panel panel2=new Panel();add(panel2);panel2.setBackground(Color.red);panel2.add(label2);panel2.add(box1);panel2.add(box2);panel2.add(box3);Panel panel3=new Panel();add(panel3);panel3.setBackground(Color.green);panel3.add(label3);panel3.add(r1);panel3.add(r2);Panel panel4=new Panel();add(panel4);panel4.setBackground(Color.white);panel4.add(label4);panel4.add(field1);Panel panel5=new Panel();add(panel5);panel5.setBackground(Color.black);panel5.add(b1);panel5.add(b2);} public static void main(String args[]){ LX6_5 m=new LX6_5("");m.setSize(500,400);m.show();}
互聯網軟件應用與開發實驗指導書
實驗小結
所謂API包就是應用程序接口。通過學習我們知道包是類和接口的集合。利用包我們可以把常用的類或功能相似的類放在一個包中。Java 語言所提供的系統包,其中包含了大量的類,我們可以在編寫Java 程序時直接引用它們。API 包—方面提供豐富的類與方法供我們使用,例如畫圖形、播放聲音等,另一方面又負責和系統軟硬件打交道,圓滿實現用戶程序的功能。所有Java API 包都以“java.”開頭,以區別用戶創建的包。
Java不支持多重繼承,接口成功的解決了這個問題,我們可以通過實現多個接口達到與多重繼承相同的功能。
通過實驗我們了解到處理程序運行時的錯誤和設計程序同樣重要,我們只有能夠完善處理運行時出錯的程序,才能使軟件系統長期穩定地運行,然而異常處理就是說明如何處理程序運行時出錯的問題。因為這次實驗代碼我們都可以找到,所以對于完成實驗還是比較簡單的。但要完全看懂代碼則比較困難。這就需要我們課后更加了努力了。通過這次實驗我們進一步體會到Java的博大精深。
第二篇:Java實驗報告
《Java簡易聊天室》
實驗目的:實現簡單的客服端與服務端通訊,進一步鞏固,加深對Java語言基礎知識的了解,將理論與實際相結合。
實驗要求:能相互之間發送消息,并進行簡單的異常處理。
聊天室截圖與說明:
客戶端
服務端
將客服端與服務端程序同時運行,此時會顯示出客戶端與服務端界面。在客戶端界面上點擊“連接”按鈕,即可使客戶端與服務端進程建立連接。在文本框中輸入將要發送的消息,點擊“發送”按鈕,即可將消息發送到對應端口。當服務端發送消息時,服務端便相當于客戶端。當需要終止連接時,關閉相應窗口即可。
設計概要:類/接口/函數說明
1.public class ClientUI extends Jframe{}
public class ServerUI extends Jframe{}
ClientUI與ServerUi繼承Frame類構建客戶端與服務器端窗口。
2.class ChatClient extends Thread{}
class SvrCom extends Thread{}
通訊類ChatClient/SvrCom負責守候數據到來
3.public void run()
用于監聽客戶端/服務器端發送來的信息,運行連接
4.public void sendMsg(String msg){// 用于發送信息
try {
out.println(“【客戶端】” + msg);
} catch(Exception e){
System.out.println(e);
}
} public void sendMsg(String msg){// 用于發送信息
try {
out.println(“【服務器】” + msg);// 把信息寫入輸出流
} catch(Exception e){
System.out.println(e);
} } 5.try {
msg = in.readLine();// 從in對象上讀數據信息
} catch(SocketException ex){
System.out.println(ex);
break;
} catch(Exception ex){
System.out.println(ex);
}
if(msg!= null && msg.trim()!= “"){
System.out.println(”>>“ + msg);
ui.mainArea.append(msg + ”n“);
}
簡單的異常處理
6.public ChatClient(String ip, int port, ClientUI ui){// 初始化ChatClient類
this.ui = ui;
try {
sc = new Socket(ip, port);// 創建sc, 用服務器ip和端口作參數
System.out.println(”已順利聯接到服務器。“);
out = new PrintWriter(sc.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(sc.getInputStream()));
} catch(Exception e){
System.out.println(e);
}
start();
public SvrCom(ServerUI ui){ // 初始化SvrCom類
this.ui = ui;
ui.setServer(this);
try {
soc = new ServerSocket(6666);// 開設服務器端口6666
System.out.println(”啟動服務器成功,等待端口號:6666“);
client = soc.accept();// 當客戶機請求連接時,創建一條鏈接
System.out.println(”連接成功!來自“ + client.toString());
in = new BufferedReader(new InputStreamReader(client
.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
} catch(Exception ex){
System.out.println(ex);
}
start();
自我評價或總結:經過本次實驗,進一步了解了客戶端與服務器之間的通信機制,對以后的編程實踐墊定了基礎。同時還鞏固了GUI圖形界面知識,更重要的是它使我對網絡編程有了一定的了解,也學到了不少知識。
附:
源代碼:import java.io.*;import java.net.*;import javax.swing.*;import java.awt.event.*;import java.awt.*;
public class ClientUI extends JFrame { JTextArea mainArea;
JTextArea sendArea;
ChatClient client;JTextField ipArea;JButton btnLink;public void setClient(ChatClient client){ this.client = client;} public ClientUI(){ super(”客戶端“);Container contain = getContentPane();contain.setLayout(new BorderLayout());mainArea = new JTextArea();JScrollPane mainAreaP = new JScrollPane(mainArea);JPanel panel = new JPanel();panel.setLayout(new BorderLayout());sendArea = new JTextArea(3, 8);JButton sendBtn = new JButton(”發送“);sendBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
client.sendMsg(sendArea.getText());
mainArea.append(”【客戶端】“ + sendArea.getText()+ ”n“);
sendArea.setText(”“);
} });JPanel ipPanel = new JPanel();ipPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));ipPanel.add(new JLabel(”服務器:“));ipArea = new JTextField(12);ipArea.setText(”127.0.0.1“);ipPanel.add(ipArea);btnLink = new JButton(”連接“);ipPanel.add(btnLink);btnLink.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
client = new ChatClient(ipArea.getText(), 6666, ClientUI.this);
ClientUI.this.setClient(client);
} });
panel.add(sendBtn, BorderLayout.EAST);
panel.add(sendArea, BorderLayout.CENTER);
contain.add(ipPanel, BorderLayout.NORTH);
contain.add(mainAreaP, BorderLayout.CENTER);
contain.add(panel, BorderLayout.SOUTH);
setSize(500, 300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
public static void main(String[] args){
ClientUI ui = new ClientUI();} }
class ChatClient extends Thread { Socket sc;BufferedReader in;PrintWriter out;ClientUI ui;
public ChatClient(String ip, int port, ClientUI ui){
this.ui = ui;
try {
sc = new Socket(ip, port);
System.out.println(”已順利聯接到服務器。“);
out = new PrintWriter(sc.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(sc.getInputStream()));
} catch(Exception e){
System.out.println(e);
}
start();}
public void run(){
String msg = ”“;
while(true){
try {
msg = in.readLine();
} catch(SocketException ex){
System.out.println(ex);
break;
} catch(Exception ex){
System.out.println(ex);
}
if(msg!= null && msg.trim()!= ”“){
System.out.println(”>>“ + msg);
ui.mainArea.append(msg + ”n“);
}
} }
public void sendMsg(String msg){
try {
out.println(”【客戶端】“ + msg);
} catch(Exception e){
System.out.println(e);
} } } import java.io.*;import java.net.*;import javax.swing.*;import java.awt.event.*;import java.awt.*;/** * 服務端界面ServerUI */ public class ServerUI extends JFrame { JTextArea mainArea;
JTextArea sendArea;
JTextField indexArea;
SvrCom server;
public void setServer(SvrCom server){
this.server = server;}
public ServerUI(){
super(”服務器端“);
Container contain = getContentPane();
contain.setLayout(new BorderLayout());
mainArea = new JTextArea();
JScrollPane mainAreaP = new JScrollPane(mainArea);JPanel panel = new JPanel();panel.setLayout(new BorderLayout());sendArea = new JTextArea(3, 8);JButton sendBtn = new JButton(”發送“);sendBtn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae){
server.sendMsg(sendArea.getText());
mainArea.append(”【服務器】sendArea.getText()+ “n”);
sendArea.setText(“");
}
});JPanel tmpPanel = new JPanel();indexArea = new JTextField(2);indexArea.setText(”0“);tmpPanel.add(sendBtn);tmpPanel.add(indexArea);panel.add(tmpPanel, BorderLayout.EAST);panel.add(sendArea, BorderLayout.CENTER);contain.add(mainAreaP, BorderLayout.CENTER);contain.add(panel, BorderLayout.SOUTH);setSize(500, 300);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);} public static void main(String[] args){ ServerUI ui = new ServerUI();SvrCom server = new SvrCom(ui);}
} class SvrCom extends Thread
{ Socket client;ServerSocket soc;BufferedReader in;PrintWriter out;ServerUI ui;// ChatServer server;public SvrCom(ServerUI ui){
” +
this.ui = ui;ui.setServer(this);try {
soc = new ServerSocket(6666);
}
System.out.println(“啟動服務器成功,等待端口號:6666”);
client = soc.accept();
System.out.println(“連接成功!來自” + client.toString());
in = new BufferedReader(new InputStreamReader(client
.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);} catch(Exception ex){
System.out.println(ex);} start();} public void run(){ String msg = “";while(true){
try {
msg = in.readLine();
} catch(SocketException ex){
System.out.println(ex);
break;
} catch(Exception ex){
System.out.println(ex);
}
if(msg!= null && msg.trim()!= ”“){
System.out.println(”>>“ + msg);
ui.mainArea.append(msg + ”n“);
} } } public void sendMsg(String msg){ try {
out.println(”【服務器】" + msg);} catch(Exception e){
System.out.println(e);} }
第三篇:JAVA實驗報告
學 生 實 驗 報 告 冊
(理工類)
課程名稱:面向對象程序設計 專業班級:16計算機科學與技術(專轉本)
學生學號: 1613203022 學生姓名: 張義丹
所屬院部: 計算機工程 指導教師: 劉 晶 16 ——20 17 學年 第 2 學期
金陵科技學院教務處制 實驗報告書寫要求
實驗報告上交電子稿,標題采用四號黑體,正文采用小四號宋體,單倍行距。
實驗報告書寫說明
實驗報告中實驗目的和要求、實驗儀器和設備、實驗內容與過程、實驗結果與分析這四項內容為必需項。教師可根據學科特點和實驗具體要求增加項目。
填寫注意事項
(1)細致觀察,及時、準確、如實記錄。(2)準確說明,層次清晰。
(3)盡量采用專用術語來說明事物。
(4)外文、符號、公式要準確,應使用統一規定的名詞和符號。(5)應獨立完成實驗報告的書寫,嚴禁抄襲、復印,一經發現,以零分論處。
實驗報告批改說明
實驗報告的批改要及時、認真、仔細,一律用紅色筆批改。實驗報告的批改成績采用五級記分制或百分制,按《金陵科技學院課堂教學實施細則》中作業批閱成績評定要求執行。
實驗項目名稱:Java編程基礎 實驗學時: 6 同組學生姓名: ———— 實驗地點: 工科樓A101 實驗日期: 17.3.21~17.4.4 實驗成績: 批改教師: 劉晶 批改時間:
實驗1 Java編程基礎
一、實驗目的和要求
(1)熟練掌握JDK1.6及Eclipse4.2編寫調試Java應用程序及Java小程序的方法;(2)熟練掌握Java應用程序的結構;
(3)了解Java語言的特點,基本語句、運算符及表達式的使用方法;(4)熟練掌握常見數據類型的使用;
(5)熟練掌握if-else、switch、while、do-while、for、continue、break、return語句的使用方法;
(6)熟練掌握數組和字符串的使用;
(7)調試程序要記錄調試過程中出現的問題及解決辦法;
(8)編寫程序要規范、正確,上機調試過程和結果要有記錄,不斷積累編程及調試經驗;
(9)做完實驗后給出本實驗的實驗報告。
二、實驗儀器和設備
奔騰以上計算機,Windows 操作系統,裝有JDK1.6和Eclipse4.2軟件。
三、實驗過程
(1)分別使用JDK命令行和Eclipse編譯運行Java應用程序;適當添加注釋信息,通過javadoc生成注釋文檔;為主方法傳遞參數“Hello world”字符串,并輸出,記錄操作過程。
public class Hello { public static void main(String args[]){ System.out.println(“Hello!”);} }(2)分別使用JDK命令行和Eclipse編譯Java Applet,并建立HTML文檔運行該Applet。壓縮生成“.jar”文件。記錄操作過程。import java.awt.*;import java.applet.Applet;public class HelloApplet extends Applet { public void paint(Graphics g){ g.setColor(Color.red);g.drawString(“Hello!”,20,20);}
} (3)根據變量score中存放的考試分數,輸出對應的等級。要求從鍵盤輸入學生成績,60分以下為D等;60~69為C等;70~89為B等;90~100為A等。(4)編寫一個Java Application程序,輸出區間[200,300]上的所有素數,將其用數組prime[]保存,并以每10個一行的形式顯示運行結果。(5)輸出下列數字形式,要求用二維數組完成。①n=4 0 0 0 0 0 1 1 1 0 1 2 2 0 1 2 3 ② n=4 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1(6)求二維數組的鞍點,即該位置上的元素在該行上最大,在列上最小。也可能無鞍點。(7)分析下列程序的輸出結果,掌握equals()方法和“= =”的區別。class StringTest2{ public static void main(String args[]){
String s1 = “This is the second string.”;
String s2 = “This is the second string.”;
String s3 = new String(“This is the second string.”);
String s4 = new String(s1);
String s5 = s1;
boolean result121 = s1.equals(s2);
boolean result122 = s1 == s2;
boolean result131 = s1.equals(s3);
boolean result132 = s1 == s3;
boolean result141 = s1.equals(s4);
boolean result142 = s1 == s4;
boolean result151 = s1.equals(s5);
boolean result152 = s1 == s5;
System.out.println(“s1 equals s2= ” +result121);
System.out.println(“s1 == s2= ” +result122);
System.out.println(“s1 equals s3= ” +result131);
System.out.println(“s1 == s3= ” +result132);
System.out.println(“s1 equals s4= ” +result141);
System.out.println(“s1 == s4= ” +result142);
System.out.println(“s1 equals s5= ” +result151);
System.out.println(“s1 == s5= ” +result152);} }(8)判斷回文字符串
回文是一種“從前向后讀”和“從后向前讀”都相同的字符串。如“rotor”是一個回文字符串。
程序中使用了兩種算法來判斷回文字符串:
算法一:分別從前向后和從后向前依次獲得原串str的一個字符ch1、ch2,比較ch1和ch2,如果不相等,則str肯定不是回文串,yes=false,立即退出循環:否則繼續比較,直到字符全部比較完,yes的值仍為true,才能肯定str是回文串。
算法二:將原串str反轉成temp串,再比較兩串,如果相等則是回文字符串。(9)使用String類的compareTo(String s)方法,對以下字符串從小到大排序:“melon”, “apple”, “pear”, “banana”,顯示輸出排序結果。
要求:
(1)編譯調試程序之前應配置好環境變量;
(2)要分別掌握用JDK命令行和Eclipse集成開發環境調試Java程序;(3)注意Java兩大類程序:應用程序和小程序的區別。
程序清單:
(建議程序中適當添加注釋信息,增強可讀性;較長程序可分欄書寫,保證報告排版整潔美觀。)
(1)主方法傳遞參數“Hello world”字符串,并輸出
public class Hello { public Hello(){
System.out.println(“HelloWorld!”);} public static void main(String args[]){
new Hello();} }(2)Eclipse編譯Java Applet import java.awt.*;import java.applet.Applet;public class HelloApplet extends Applet { int height,width;public void init(){
this.height=100;
this.width=300;}
public void paint(Graphics g){
g.setColor(Color.red);
g.drawString(“Hello!”, 20, 20);} }(3)
package b;import java.util.Scanner;public class Test { public static void main(String args[]){
int score;
//char grade;
System.out.println(“請輸入分數按回車”);
Scanner reader=new Scanner(System.in);
score=reader.nextInt();
if(score>=90&&score<=100){
System.out.println(“A”);
}
else if(score>=70&&score<=89){
System.out.println(“B”);
}
else if(score>=60&&score<=69){
System.out.println(“C”);
}
else if(score<60){
System.out.println(“D”);
}
else{
System.out.println(“數據錯誤”);
} } }(4)
public class Lim { public static void main(String[] args){
int[] prime = calculation(20, 200, 300);
for(int i = 0;i < prime.length;i++){
if(prime[i]!= 0){
if(i % 10 == 0 && i!= 0)
System.out.println();
System.out.print(prime[i] + “ ”);// 打印數據
}
}
} public static int[] calculation(int length, int start, int end){
int j;
int step = 0;
int[] prime = new int[length];
for(int i = start;i <= end;i++)
{
j = 2;
while(i % j!= 0){
j++;
}
if(j == i)
{
prime[step] = i;
step++;
}
}
return prime;
} }(5)① public class shuzu { public static void main(String args[]){
int i,j;
int arr[][]=new int[4][];
for(i=0;i arr[i]=new int[arr.length];for(i=0;i<4;i++) for(j=3;j>=i;j--){ arr[i][j]=i; } for(j=0;j<4;j++){ for(i=3;i>=j;i--){ arr[i][j]=j; } } for(i=0;i<=3;i++){ for(j=0;j<=3;j++){ System.out.print(arr[i][j]); System.out.print(“ ”); } System.out.println(); } } } ②public class Shuzu { public static void main(String args[]){ int num[][]=new int[4][];for(int i=0;i num[i]=new int[2*i+1]; for(int m=0;m System.out.print(“ ”); } int k=i+1; for(int j=0;j if(j<=i) num[i][j]=j+1; else{ k--; num[i][j]=k; } System.out.print(num[i][j]+“ ”); } System.out.println();} } }(6)public class test { public static void main(String[] args){ // TODO Auto-generated method stub int[][] mat = {{11,12,13},{4,5,6},{7,8,9}}; for(int i=0;i { for(int j=0;j System.out.print(mat[i][j]+“ ”); System.out.println(); } boolean find = false;//找到鞍點標記 int row=0;//第1行下標 int max=0;//記錄當前行最大值的列下標 while(!find && row { max=0;//初始設每行第1列值最大 for(int j=1;j if(mat[row][j]>mat[row][max])//mat[row][max]為該行最大值 max = j; boolean yes = true;//再判斷mat[row][max]是否在列上最小 int j=0; while(yes && j { if(mat[j][max] yes=false; j++; } if(yes) find = true; else row++; } if(find) System.out.println(“The dort: ”+mat[row][max]); else System.out.println(“The dort: null”);} }(8)import java.util.Scanner;public class HuiWenTest { public static void main(String[] args){ // TODO Auto-generated method stub System.out.println(“請輸入一個字符串”);@SuppressWarnings(“resource”) Scanner input = new Scanner(System.in);String str = input.next();StringBuilder sb=new StringBuilder(str);sb.reverse();//將Sr倒置的方法 String newStr=new String(sb);if(str.equals(newStr)){ System.out.println(str+“是回文字符串”);}else{ System.out.println(str+“不是回文字符串”);} } }(9)import java.util.*;public class SortString { public static void main(String[] args){ // TODO Auto-generated method stub String [ ] a={“melon”,“apple”,“pear”,“banana”}; String [ ] b=Arrays.copyOf(a,a.length);System.out.println(“使用用戶編寫的SortString類,按字典序排列數組a:”);SortString.sort(a);System.out.println(“排序結果是:”);for(String s:a){ System.out.print(“ ”+s);} System.out.println(“");System.out.println(”使用類庫中的Arrays類,按字典序排列數組b:“);Arrays.sort(b);System.out.println(”排序結果是:“);for(String s:b){ System.out.print(” “+s);} } 四、實驗結果與分析(程序運行結果及其分析) (1) (2) (3) (4) (5) (6) (7) (8) (9) 五、實驗體會(遇到問題及解決辦法,編程后的心得體會) 在這次實驗中,我知道了eclipse和jdk運行程序的區別,jdk比較麻煩一些,需要配置變量。在實驗中,配置jdk的環境變量要注意它的path和 classpath,如果classpath本身就有,可以在后面加分號,這樣不影響其它的classpath的使用。學會了如何生成注釋文檔,主函數傳遞參數的方法,還有壓縮文件,實驗中還對數組的創建和使用進行了練習,還有一些類的應用。 實驗項目名稱: 面向對象編程 實驗學時: 8 同組學生姓名: ———— 實驗地點: 工科樓A101 實驗日期: 17.4.11~17.5.2 實驗成績: 批改教師: 劉晶 批改時間: 實驗2 面向對象編程 一、實驗目的和要求 (1)熟練掌握Java語言類定義的基本語法;(2)熟練掌握類成員的訪問控制,對象建立的方法;(3)熟練掌握類構造方法、成員方法的定義和重載;(4)熟練掌握類繼承、多態和抽象性;(5)熟練掌握接口的定義和實現方法;(6)掌握基本的異常處理方法; (7)調試程序要記錄調試過程中出現的問題及解決辦法; (8)編寫程序要規范、正確,上機調試過程和結果要有記錄,不斷積累編程及調試經驗; (9)做完實驗后給出本實驗的實驗報告。 二、實驗儀器和設備 奔騰以上計算機,Windows 操作系統,裝有JDK1.6和Eclipse4.2軟件。 三、實驗過程 (1)定義一個Man類,保存在Man.java文件中,類中包含說話方法如下: public class Man { public void say() { System.out.println(“我是中國人!”); } } 為此類打包為cn.edu.jit.chinese;再在Man.java文件所在路徑下,創建一個China.java文件,其中定義China類如下: public class China { public static void main(String[] args) { Man lihua = new Man(); lihua.say(); } } 在China類中引用Man類,輸出顯示“我是中國人!”。試著去掉Man類的public修飾,看看會發生什么情況? (2)設計復數類,成員變量包括實部和虛部,成員方法包括實現復數加法、減法、字符串描述、比較是否相等等操作。 (3)包的建立與使用:設計計算器類Calculator,計算加、減、乘、除和立方體體積,并且打包為mypackage。觀察源文件目錄下是否生成了mypackage文件夾,在該文件夾中是否有Calculate.class文件。編輯PackageDemo.java,保存在Calculator.java同一目錄下,引用計算器類的各方法顯示計算結果。 (4)試編碼實現簡單的銀行業務:處理簡單帳戶存取款、查詢。編寫銀行帳戶類BankAccount,包含數據成員:余額(balance)、利率(interest);操作方法:查詢余額、存款、取款、查詢利率、設置利率。再編寫主類UseAccount,包含main()方法,創建BankAccount類的對象,并完成相應操作。 (5)假定根據學生的3門學位課程的分數決定其是否可以拿到學位,對于本科生,如果3門課程的平均分數超過60分即表示通過,而對于研究生,則需要平均超過80分才能夠通過。根據上述要求,請完成以下Java類的設計: 1)設計一個基類Student描述學生的共同特征。 2)設計一個描述本科生的類Undergraduate,該類繼承并擴展Student類。3)設計一個描述研究生的類Graduate,該類繼承并擴展Student類。 4)設計一個測試類StudentDemo,分別創建本科生和研究生這兩個類的對象,并輸出相關信息。 (6)設計三角形類,繼承圖形抽象類,計算三角形面積和周長。 (7)試編碼實現多態在工資系統中的應用:給出一個根據雇員類型利用abstract方法和多態性完成工資單計算的程序。Employee是抽象類,Employee的子類有Boss(每星期發給他固定工資,而不計工作時間)、CommissionWorker(除基本工資外還根據銷售額發放浮動工資)、PieceWorker(按其生產的產品數發放工資)、HourlyWorker(根據工作時間長短發放工資)。該例的Employee的每個子類都聲明為final,因為不需要再繼承它們生成子類。在主測試類Test中測試各類雇員工資計算結果。 提示:對所有雇員類型都使用earnings()方法,但每個人掙的工資按他所屬的雇員類計算,所有雇員類都是從超類Employee派生出的。在超類中聲明earnings()為抽象方法,并且對于每個子類都提供恰當的earnings()的實現方法。為了計算雇員的工資,程序僅僅使用雇員對象的一個超類引用并調用earnings()方法。在一個實際的工資系統中,各種Employee對象的引用可以通過一個Employee引用數組來實現。程序依次使用數組的每個元素(Employee引用)調用每個對象的earnings()方法。Employee類定義如下: abstract class Employee { private String firstName;private String lastName;public Employee(String first,String last){ firstName=first;lastName=last;} public String getEmployeeName(){ return firstName;} public String getLastName(){ return lastName;} public String toString(){ return firstName+lastName;} public abstract String earnings();}(8)設計圓柱體類和圓椎體類,繼承圓類Circle并實現體積接口Volume,計算表面積和體積。 (9)定義一個接口CanFly,描述會飛的方法public void fly();分別定義飛機類和鳥類,實現CanFly接口。定義一個測試類,測試飛機和鳥。測試類中定義一個makeFly(CanFly obj)方法,讓會飛的事物飛起來(即調用相應類的fly()方法)。然后在main方法中創建飛機對象和鳥對象,并在main方法中調用makeFly(CanFly obj)方法,讓飛機和鳥起飛。 (10)異常的捕獲:計算兩數相除并輸出結果。使用三個catch子句,分別捕捉輸入輸出異常、除數為0的異常和參數輸入有誤異常。import java.io.*;class Ex1 { public static void main(String args[ ]){ try{ BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));//建立輸入流緩沖區 System.out.print(”請輸入除數:“);String cl=strin.readLine();//鍵盤輸入 int a=Integer.parseInt(cl);System.out.print(”請輸入被除數:“);cl=strin.readLine();int b=Integer.parseInt(cl);int c=b/a;System.out.println(”商為:“+c);} //捕獲與I/O有關的異常(空白處補全捕獲語句) //捕獲數值轉化時的異常,如不能將字符轉化成數值 //捕獲除數為0的異常 } } 編譯并運行,當產生輸入輸出異常時顯示異常信息;當輸入除數為0時,出現算術異常,提示除數為0,并要求重新輸入;當輸入的不是整數時,如將30輸成了3o,出現數值格式異常,提示輸入整數。 (11)編寫程序包含自定義異常MyException,當100被13和4除時拋出該異常,其余除數顯示商值。 要求: (1)注意選用適當的類成員修飾符(private、protected、public等),比較它們的使用情況; (2)養成良好的編程習慣,嚴格按照命名規則為包、類及類成員命名,將每個程序打包,包的命名方式如two.num1表示實驗二的第一題; (3)學會使用Eclipse的各種調試方法; (4)學會查閱Java API文檔,如查找異常類的使用方法。 程序清單: (建議程序中適當添加注釋信息,增強可讀性;較長程序可分欄書寫,保證報告排版整潔美觀。)(1)package cn.edu.jit.chinese;// 為Man類打包為cn.edu.jit.chinese public class Man { public void say(){ System.out.println(”我是中國人!“);} } package cn.edu.jit.chinese; import cn.edu.jit.chinese.*;//導入包 public class China { public static void main(String[] args){ Man lihua = new Man();//主方法先創建類然后調用類 lihua.say();} }(2)public class Complex { private double real,image;//定義私有的real,image public Complex(double real,double image) {this.real=real;//賦值 this.image=image;} public Complex(double real){this(real,0);} public Complex(){this(0,0);} public Complex(Complex c){this(c.real,c.image);} public double getReal(){return real;} public void setReal(double real){ this.real = real;} public double getImage(){ return image;} public void setImage(double image){ this.image = image;} public Complex add(Complex c1,Complex c2)//寫方法 {Complex C=new Complex(c1.real+c2.real,c1.image+c2.image);return C;} public Complex add(Complex c1){Complex C=new Complex(this.real+c1.real,this.image+c1.image);return C;} public Complex jian(Complex c1,Complex c2){Complex C=new Complex(c1.real-c2.real,c1.image-c2.image);return C;} public Complex jian(Complex c1){Complex C=new Complex(this.real-c1.real,this.image-c1.image);return C;} public boolean bijiao(Complex c1,Complex c2){return(c1.real==c2.real&&c1.image==c2.image);} public boolean bijiao(Complex c1){return(c1.real==this.real&&c1.image==this.image);} public String toString(){return this.real+”+“+this.image+”i“;} } public class ComplexText { public static void main(String[] args){ Complex c1=new Complex(2,5);//創建類,調用類里面的方法 Complex c2=new Complex(5,2); Complex c3=new Complex(); System.out.println(c3.add(c1,c2)); System.out.println(c3.jian(c1,c2)); System.out.println(c3.bijiao(c1,c2));} }(3)public class Calculate { double i,j, t;public Calculate(int i,int j){this.i=i;this.j=j;} public Calculate(int i,int j,int t){this.i=i;this.j=j;this.t=t;} public double add(){return i+j;} public double jian(){return i-j;} public double cheng(){return i*j;} public double chu(){return i/j;} public double tiji(){return i*i*i+j*j*j+t*t*t;} } public class PackageDemo {//測試 public static void main(String[] args){ Calculate c1=new Calculate(8,4); Calculate c2=new Calculate(8,4,2); System.out.println(”相加=“+c1.add()); System.out.println(”相減=“+c1.jian()); System.out.println(”相乘=“+c1.cheng()); System.out.println(”相除 =“+c1.chu()); System.out.println(”立方體體積=“+c2.tiji());} }(4)public class BankAccount { double balance,interest,cunkuan;public BankAccount(double cunkuan,double balance)//寫方法 {this.balance=balance; this.cunkuan=cunkuan;} public void set(double cunkuan) {if(cunkuan<10000)interest=0.1; else if(cunkuan<50000)interest=0.25; else if(cunkuan<100000)interest=0.035; else interest=0.5;} public double get() { return interest;} public void chaxun(double balance,double cunkuan) {System.out.println(”存款為:“+cunkuan); System.out.println(”余額為:“+balance);} public void qu(double qukuan) {System.out.println(”取款為:“+qukuan);System.out.println(”得到的利潤率:“+(this.cunkuan-qukuan)*this.interest);} } public class UseAccount {//測試 public static void main(String[] args){ BankAccount c1=new BankAccount(40000,40000); c1.chaxun(40000,20000); c1.set(20000); System.out.println(”利率為“+c1.get()); c1.qu(10000);} }(5)public class Student { String name;int age;float average,chainese;float math,Enghish;public Student(String name,int age){this.name=name;this.age=age;System.out.println(name+”:“+age+”歲“+” “);} public void set(float chinese,float math,float Enghish){average=(chinese+math+Enghish)/3;} public float get(){return average;} } class Undergraduate extends Student// Student繼承Undergraduate {public Undergraduate(String name,int age){ super(name,age);} public void hege(float average){ this.average=average; if(average>=60)System.out.println(”本科生成績合格“);else System.out.println(”本科生成績不合格“);}} class Graduate extends Student// Student繼承Graduate {public Graduate(String name,int age){ super(name,age);//調用 } public void hege(float average){ this.average=average;if(average>=80)System.out.println(”研究生生成績合格“);else System.out.println(”研究生成績不合格“);} } public class StudentDemo {//測試 public static void main(String[] args){ Undergraduate c1=new Undergraduate(”小明 “,22); System.out.println(”本科生三門成績分別為:“+”59,“+”85,“+”90“); c1.set(65,75,60); System.out.println(”本科生平均分=“+c1.get()); c1.hege(c1.get()); System.out.println(); Graduate c2=new Graduate(”小紅 “,18); System.out.println(”研究生生三門成績分別為“+”90,“+”84,“+”88“); c2.set(80,86,79); System.out.println(”研究生生平均分=“+c2.get()); c2.hege(c2.get());}(6)public abstract class ClosedFigure {//定義抽象類 String shape;public ClosedFigure(String newShape){this.shape=newShape;} public abstract double perimeter();//定義抽象類,里面不能寫方法 public abstract double area();} public class Triangle extends ClosedFigure {// ClosedFigure繼承Triangle double a,b,c;public Triangle(String newShape,double a,double b,double c){super(”newShape“);this.a=a;this.b=b; this.c=c;} public double perimeter(){return a+b+c;} public double area(){double s;s=(a+b+c)/2;return Math.sqrt(s*(s-a)*(s-b)*(s-c));} public String toString(){return(”三角形三邊長:“+a+” “+b+” “+c+” “+”周長:“+perimeter()+”面積:“+area());} public class Test { public static void main(String[] args){ Triangle c1=new Triangle(”三角形“,3,4,5); c1.perimeter(); c1.area(); System.out.println(c1.toString());} } }(7)public abstract class Employee { private String firstName;private String lastName;public Employee(String first,String last) {firstName=first; lastName=last;} public String getEmployeeName() {return firstName;} public String getLastName() { return lastName;} public String toString() {return firstName+lastName;} public abstract String earnings();} public final class Boss extends Employee{ double salary;public Boss(String first, String last, double salary){ super(first, last); this.salary = salary;} public String earnings(){return(salary+”“);} } public final class CommissionWorker extends Employee { double salary; double sale;double price;public CommissionWorker(String first, String last, double salary, double sale,double price){ super(first, last); this.salary = salary; this.sale = sale; this.price = price;} public String earnings(){return(salary+sale*price+”“);} } public final class PieceWorker extends Employee{ double number; double price; public PieceWorker(String first, String last, double number,double price){ super(first, last); this.number = number; this.price=price; } public String earnings() {return(number*price+”“);} } public final class HourlyWorker extends Employee {double time;double money;public HourlyWorker(String first, String last, double time, double money){ super(first, last);this.time = time;this.money = money;} public String earnings(){ return(time*money+”“);} } public class Test { public static void main(String[] args){ Employee c1=new Boss(”張“,”三“,10000); System.out.println(”張三月工資:“+c1.earnings()); Employee c2=new CommissionWorker(”李“,”四“,4000,1500,2); System.out.println(”李四月工資:“+c2.earnings()); Employee c3=new PieceWorker(”王“,”五“,1000,3); System.out.println(”王五月工資:“+c3.earnings()); Employee c4=new HourlyWorker(”劉“,”三“,600,30); System.out.println(”劉三月工資:“+c4.earnings());} }(8)public class Circle { String shape;double r;double height;double pi;public Circle(String shape,double r,double height,double pi){this.shape=shape;this.height=height;this.r=r;this.pi=pi;} } public interface Volume { public abstract double area();public abstract double NewVolume();} public class Yuanzhu extends Circle implements Volume { public Yuanzhu(String shape, double r, double height, double pi){ super(shape, r, height, pi);} public double area(){ return pi*r*r;} public double NewVolume(){return area()*height;} } public class Yuanzhui extends Yuanzhu implements Volume { public Yuanzhui(String shape, double r, double height, double pi){ super(shape, r, height, pi); // TODO Auto-generated constructor stub } double s;public double area(){s=Math.sqrt(height*height+r*r);return pi*r*s+pi*r*r;} public double NewVolum(){return 1.0/3*pi*r*pi*r*height;} } public class Test { public static void main(String[] args){ Yuanzhu c1=new Yuanzhu(”圓柱“,4,6,3.14); Yuanzhui c2=new Yuanzhui(”圓錐“,2,3,3.14); System.out.println(”圓柱表面積:“+c1.area()); System.out.println(”圓柱體積:“+c1.NewVolume()); System.out.println(”圓錐表面積:“+c2.area()); System.out.println(”圓錐體積:“+c2.NewVolume());} }(9)public interface CanFly {//定義接口CanFly public void fly();} public class Plane implements CanFly{//使用接口 @Override public void fly(){ // TODO Auto-generated method stub System.out.println(”飛機借助螺旋槳飛上天空“);} } public class Bird implements CanFly{ @Override public void fly(){ // TODO Auto-generated method stub System.out.println(”小鳥 借助翅膀飛上天空“);} } public class Test { static void makeFly(CanFly obj){ obj.fly();} public static void main(String[] args){ // TODO Auto-generated method stub CanFly p =new Plane(); makeFly(p); CanFly b =new Bird(); makeFly(b);} }(10)import java.io.*;public class Ex1 { public static void main(String args[ ]){ try{ BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));//建立輸入流緩沖區 System.out.print(”請輸入除數:“);String cl=strin.readLine();//鍵盤輸入 int a=Integer.parseInt(cl);System.out.print(”請輸入被除數:“);cl=strin.readLine();int b=Integer.parseInt(cl);int c=b/a;System.out.println(”商為:“+c);} //捕獲與I/O有關的異常(空白處補全捕獲語句) catch(IOException e){System.out.println(”輸入輸出異常“);} //捕獲數值轉化時的異常,如不能將字符轉化成數值 catch(NumberFormatException e){System.out.println(”數值格式異常,重新輸入“); } //捕獲除數為0的異常 catch(ArithmeticException e){System.out.println(”除數為0,重新輸入“);} } }(11)(1)MyException類: package exp2_11;public class MyException extends Exception{ MyException(String msg){ super(msg);} }(2)Div主類: package exp2_11;import java.io.*;public class Div { public static void main(String args[])throws MyException{ try{ BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print(”請輸入實數除法運算的被除數:“); String str = in.readLine(); double a = Double.parseDouble(str); System.out.print(”請輸入除數:“); str = in.readLine(); double b = Double.parseDouble(str); System.out.println(”商結果:“+division(a,b)); } catch(ArithmeticException e1){ System.out.println(”商結果:Infinity“+e1); System.out.println(”商結果:NaN“+e1); } catch(NumberFormatException e2){ System.out.println(”異常:字符串不能轉換成整數!“+e2); } catch(IOException e3){ System.out.println(”異常:IO異常“+e3); } finally{ System.out.println(”程序結束!“); } } static double division(double a,double b)throws MyException{ if(a==100 &&(b==4 || b==13)) throw new MyException(”不符規范“); else return(a/b);} } 四、實驗結果與分析(程序運行結果及其分析) (1) 去掉Man類的public修飾,程序運行不出來,提示缺少Man的公開方法。(2) (3) (4) (5) (6) (7) (8) (9) (10) (11) 五、實驗體會(遇到問題及解決辦法,編程后的心得體會) 學習程序設計的基本目的就是培養描述實際問題的程序化解決方案的關鍵技能Java面向對象程序設計是一門實踐性比較強的課程在實際中我們必須把理論和實踐結合起來。在實驗中我們對照課本的知識然后進行實際的操作而后發現實際的運用比課本提到的要多很多理論總是來源于實踐我們必須在現有的理論的基礎上進行有效地實踐。而這次實驗也讓我看到了現在學習的一個很大弱點就是實踐的實踐往往很少。在現實社會中我們必須懂得實際的操作才能更好的服務于社會。所以我必須在以后的學習中多動手多實際操作爭取能在實踐中找到屬于自己新的感悟,終于在學習Java時達到了事半功倍的效果。 實驗項目名稱: 圖形用戶界面 實驗學時: 6 同組學生姓名: ———— 實驗地點: 工科樓A101 實驗日期: 17.5.9~17.5.23 實驗成績: 批改教師: 劉晶 批改時間: 實驗3 圖形用戶界面 一、實驗目的和要求 (1)掌握Swing組件的使用方法; (2)熟練掌握Swing中常用布局管理器的使用方法;(3)掌握用戶界面動作與事件的處理程序的編寫方法;(4)熟練掌握構造用戶界面的方法和常見界面元素的使用;(5)熟練掌握Java繪圖的主要方法。 (6)調試程序要記錄調試過程中出現的問題及解決辦法; (7)編寫程序要規范、正確,上機調試過程和結果要有記錄,不斷積累編程及調試經驗; (8)做完實驗后給出本實驗的實驗報告。 二、實驗儀器和設備 奔騰以上計算機,Windows 操作系統,裝有JDK1.6和Eclipse4.2軟件。 三、實驗過程 1.計算器設計 2.整數進制轉換 將一個十進制整數分別轉換成二進制、八進制和十六進制整數。 3.模擬裁判評分。 設計如圖所示圖形界面,顯示n個裁判的評分,根據制定規則計算出最后得分。要求:圖形界面采用表格顯示裁判評分,隨裁判人數變化而變化;指定分數范圍,若超出,則異常處理; 得分規則有指定接口約定,由多個接口對象給出多種得分規則,如求平均數值,或去掉一個最高分和一個最低分后,再求平均值。 4.編譯運行下例,然后修改程序,當使用鼠標單擊后在另一位置重新繪制月亮。【例】 在Applet中畫月亮。import java.awt.*;import java.applet.Applet;public class MoonApplet extends Applet { public void paint(Graphics g)//在Applet上繪圖 { g.setColor(Color.red);g.drawString(”The Moon“,100,20);int x=0,y=0;//圓外切矩形左上角坐標 x = this.getWidth()/4;y = this.getHeight()/4;int diameter = Math.min(this.getWidth()/2, this.getHeight()/2);//圓的直徑 g.setColor(Color.yellow);g.fillOval(x,y,diameter,diameter);//畫圓 g.setColor(this.getBackground());//設置為背景色 g.fillOval(x-20,y-20,diameter,diameter);//畫圓 } } 5.根據阿基米德螺線的極坐標方程:r=aθ畫出相應圖形。 要求: (1)注意選用適當的布局管理器設計圖形用戶界面,比較它們的布局情況; (2)養成良好的編程習慣,嚴格按照命名規則為包、類及類成員命名,將每個程序打包,包的命名方式如three.num1表示實驗三的第一題;(3)學會使用Eclipse的各種調試方法; (4)學會查閱Java API文檔,如查找事件類的處理里方法。 程序清單: (建議程序中適當添加注釋信息,增強可讀性;較長程序可分欄書寫,保證報告排版整潔美觀。) 1.import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.*;import javax.swing.*; public class Calulator implements ActionListener { JTextField t1;JPanel p1;JFrame f;static int count=1;static float value=0;int p2=0;String p;public Calulator(){f=new JFrame(”Calulator“);f.setSize(400,200);p1=new JPanel();t1=new JTextField(30);t1.setHorizontalAlignment(JTextField.RIGHT);p1.setLayout(new GridLayout(5,4));f.add(t1);String str[]= {”開根“,”+“,”-“,”清零“,”7“,”8“,”9“,”/“,”4“,”5“,”6“,”*“,”1“,”2“,”3“,”負“,”0“,”.“,”正“,”=“};for(int i=0;i<20;i++){JButton b=new JButton(str[i]);p1.add(b);b.addActionListener(this);} f.add(t1,BorderLayout.CENTER);f.add(p1,BorderLayout.SOUTH);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setVisible(true);} public void actionPerformed(ActionEvent e){ String c = e.getActionCommand();if(c==”0“||c==”1“||c==”2“||c==”3“||c==”4“||c==”5“||c==”6“||c==”7“||c==”8“||c==”9“||c==”.“){if(p2==0){t1.setText(c);p2++;} else {t1.setText(t1.getText()+c);p2++;}} else if(p==”清零“){value=0;t1.setText(String.valueOf(value));} else {count++;p2=0;if(count==2){p=c;value=Float.parseFloat(t1.getText());} if(c==”=“){ if(p==”開根“){value=(float)Math.sqrt(Float.parseFloat(t1.getText()));t1.setText(String.valueOf(value));count-=2;} else if(p==”+“){value+=Float.parseFloat(t1.getText());count-=2;} else if(p==”-“){ value-=Float.parseFloat(t1.getText());count-=2;} else if(p==”*“){value*=Float.parseFloat(t1.getText());count-=2;} else if(p==”/“){ value/=Float.parseFloat(t1.getText());count-=2;} else if(p==”正”){value=Math.abs(Float.parseFloat(t1.getText()));t1.setText(String.valueOf(value));count-=2;} else if(p==”負“){value=-1*Float.parseFloat(t1.getText());t1.setText(String.valueOf(value));count-=2;} t1.setText(String.valueOf(value));value=0;}} } public static void main(String[] args){ new Calulator();}} 2.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ZhuanH extends JFrame implements ActionListener{ TextField t1,t2,t3,t4;public ZhuanH(){super(”十進制整數轉換“);this.setBackground(Color.BLUE);t1=new TextField(5);t2=new TextField(5);t3=new TextField(5);t4=new TextField(5);t1.setText(null);this.setSize(400,200);this.setLayout(new GridLayout(4,2));this.add(new Label(”十進制“));this.add(t1);t1.addActionListener(this);this.add(new Label(”二進制“));this.add(t2);this.add(new Label(”八進制“));this.add(t3);this.add(new Label(”十六進制“));this.add(t4);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);} public void actionPerformed(ActionEvent e){ String c = t1.getText();t2.setText(Integer.toBinaryString(Integer.parseInt(c)));t3.setText(Integer.toOctalString(Integer.parseInt(c))); t4.setText(Integer.toHexString(Integer.parseInt(c)));} public static void main(String[] args){ new ZhuanH();}} 3.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class PingFen extends JFrame implements ActionListener{ JPanel p,p1;JTextField t;JTextField t1[]=new JTextField[10];JButton b;float s=0,k;int t2,t3;public PingFen(){ super(”模擬裁判評分“);this.setSize(300,120);p1=new JPanel(new GridLayout(2,5));this.add(p1,”North“);p=new JPanel(new FlowLayout(FlowLayout.RIGHT));this.add(p,”South“);b=new JButton(”平均分“);t=new JTextField(10);p.add(b);p.add(t);for(int i=0;i<10;i++){ t1[i]=new JTextField(6);t1[i].setText(null);p1.add(t1[i]);} b.addActionListener(this);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);} public void actionPerformed(ActionEvent e){float max,min;for(int i=0;i<10;i++){ try{ if(Float.parseFloat(t1[i].getText())>10.0)throw new Exception(); else continue;} catch(Exception ev){JOptionPane.showMessageDialog(this,t1[i].getText()+”超出范圍“+”,“+” 請重新輸入“);t1[i].setText(null);} } max=Float.parseFloat(String.valueOf(t1[0].getText()));min=Float.parseFloat(String.valueOf(t1[0].getText()));for(int i=1;i<10;i++){ if((k=Float.parseFloat(String.valueOf(t1[i].getText())))>max){max=k;t2=i;} else if((k=Float.parseFloat(String.valueOf(t1[i].getText()))) new PingFen();}} 4.import java.awt.*;import java.applet.Applet;import java.awt.event.*;public class MoonApplet extends Applet implements MouseListener { int x,y;public void init(){ x=this.getWidth()/4; y=this.getHeight()/4; addMouseListener(this);} public void paint(Graphics g)//在Applet上繪圖 { g.setColor(Color.red);g.drawString(”The Moon“,100,20);int diameter = Math.min(this.getWidth()/2, this.getHeight()/2);//圓的直徑 g.setColor(Color.yellow);g.fillOval(x,y,diameter,diameter);//畫圓 g.setColor(this.getBackground());//設置為背景色 g.fillOval(x-20,y-20,diameter,diameter);//畫圓 } public void mouseClicked(MouseEvent e){ x=e.getX();y=e.getY();repaint();} 5.package package2;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class LuoXuan extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L;private LuoXuanCanvas canvas;//自定義畫布組件 public LuoXuan(){super(”阿基米德螺線“);Dimension dim=getToolkit().getScreenSize();this.setBounds(dim.width/4,dim.height/4,dim.width/2,dim.height/2);JPanel p=new JPanel();this.add(p,”North“);JButton b=new JButton(”選擇顏色“);p.add(b);b.addActionListener(this);this.canvas=new LuoXuanCanvas();this.getContentPane().add(this.canvas, ”Center“);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);} public void actionPerformed(ActionEvent e){Color c=JColorChooser.showDialog(this, ”選擇顏色“, Color.BLUE);this.canvas.setColor(c);this.canvas.repaint();} public static void main(String[] args){ new LuoXuan();} } class LuoXuanCanvas extends Canvas {private Color color;public void LuoXuan(Color color){this.setColor(color);} public void setColor(Color color){this.color=color;} public void paint(Graphics g){int x0=this.getWidth()/2;int y0 = this.getHeight()/2;g.setColor(this.color);g.drawLine(x0, 0, x0, y0*2);g.drawLine(0, y0, x0*2, y0); for(int i=0;i<4000;i++){double angle=i*Math.PI/512;double radius=angle*0.5;int x=(int)Math.round(radius*angle*Math.cos(angle));int y=(int)Math.round(radius*angle*Math.sin(angle));g.drawOval(x0+x, y0+y, 1, 1);} }} 四、實驗結果與分析(程序運行結果及其分析) (分析每題采用的布局管理器、事件處理類和主要功能實現方法)1.2.3.4.38 5.五、實驗體會(遇到問題及解決辦法,編程后的心得體會) 這次實驗主要是對圖形用戶界面的設計,這里有鼠標觸發的事件,就要讓類實現MouseListener,在類里面實現MouseListener的方法,這里是選擇單擊時(mouseClicked()),這個方法,在方法體內用getX(),getY()方法來獲取當前坐標。 實驗項目名稱:Java高級編程 實驗學時: 4 同組學生姓名: ———— 實驗地點: 工科樓A101 實驗日期: 17.5.30~17.6.6 實驗成績: 批改教師: 劉晶 批改時間: 實驗4 Java高級編程 一、實驗目的和要求 (1)了解文件的概念和文件對象的創建方法;(2)掌握使用文件輸入輸出流讀寫文件的方法;(3)了解線程的基本概念和多線程程序設計的基本方法;(4)掌握數據庫連接的方法; (5)創建SQL查詢并更新數據庫中的信息; (6)調試程序要記錄調試過程中出現的問題及解決辦法; (7)編寫程序要規范、正確,上機調試過程和結果要有記錄,不斷積累編程及調試經驗; (8)做完實驗后給出本實驗的實驗報告。 二、實驗儀器和設備 奔騰以上計算機,Windows 操作系統,裝有JDK1.6和Eclipse4.2軟件,MySQL數據庫。 三、實驗過程 (1)使用文件字節輸入/輸出流,合并兩個指定文件;當文件中的數據已排序時,合并后的數據也要求是已排序的。 (2)將Java的關鍵字保存在一個文本文件中,判斷一個字符串是否為Java的關鍵字。(3)編寫在構造方法中產生一個1-5之間的隨機數的繼承Thread類的線程類DelayPrintThread,使得線程體每休眠此隨機數時間就打印輸出線程號和休眠時間;另外編寫應用DelayPrintThread類的Java應用程序TwoThread.java,在main()方法中創建兩個線程,并應用sleep()控制主應用程序延遲一段時間。 (4)編寫繼承Runnable接口的Applet多線程小程序類MultiThreadApplet,編寫繼承該類的Applet小程序類Clock,在Clock中重新構造父類的run()方法,實現數字時鐘的功能,要求不斷刷新顯示時、分、秒。 (5)為學生信息表stuinfo設計數據庫應用程序,包括數據的輸入、刪除和查詢功能。 要求: (1)注意選用適當的文件流進行文件讀寫; (2)學會兩種創建線程的方法,并比較使用場合; (3)養成良好的編程習慣,嚴格按照命名規則為包、類及類成員命名,將每個程序打包,包的命名方式如four.num1表示實驗四的第一題;(4)學會查閱Java API文檔,如查找常用工具類。 程序清單: (建議程序中適當添加注釋信息,增強可讀性;較長程序可分欄書寫,保證報告排版整潔美觀。)1.import java.io.*;import java.util.Arrays;public class File { private String Filename;static int s=0,t=0;public File(String Filename){this.Filename=Filename;} public void writeToFile(byte[] buffer)throws IOException {if(s==0){FileOutputStream fout = new FileOutputStream(this.Filename);s++;Arrays.sort(buffer);fout.write(buffer);this.readFromFile();fout.close();} else { FileOutputStream fout1 = new FileOutputStream(this.Filename,true);Arrays.sort(buffer);fout1.write(buffer);fout1.close();} } public void readFromFile()throws IOException { FileInputStream fin = new FileInputStream(this.Filename);if(t==0){System.out.println(”文件名“+”:“+this.Filename+”:“);t++;} else System.out.println(”合并兩個文件后“+”:“+this.Filename+”:“);byte[] buffer = new byte[512];int count = fin.read(buffer);while(count!=-1){ for(int i=0;i byte[] buffer = {0,1,4,3,2,5,6,9,8,7};byte[] buffer1 = {10,11,12,14,15,17,16,19,20,13,18};File afile = new File(”ByteFile.dat“);afile.writeToFile(buffer);afile.writeToFile(buffer1);afile.readFromFile();} } 2.import java.io.*;public class File { private String Filename;public File(String Filename){this.Filename=Filename;} public void writerLine(String[] s)throws IOException {FileWriter f = new FileWriter(this.Filename);System.out.println(this.Filename+”文件中的java關鍵字有“+”:“);for(int i=0;i public void Text(String[] s,String[] s1){int i,j;for(i=0;i if(s1[i]==s[j]) {System.out.println(s1[i]+”是java中的關鍵字“);break;} else continue;if(j==s.length)System.out.println(s1[i]+”不是java中的關鍵字“);} } public static void main(String[] args)throws IOException { String[]s={”public“,”class“,”static“,”void“,”String“,”print“,”byte“,”boolean“,”int“,”short“,”long“,”throw“,”cath“,”continue“,”private“,”abstract“,”Interface“,”Exception“};String[] s1={”pblic“,”class“,”string“};File a=new File(”myfile.dat“);a.writerLine(s);a.Text(s,s1);} } 3.public class DelayPrintThread extends Thread{ private int number,time;public DelayPrintThread(int number) {this.number=number; time=(int)(Math.random()*5);} public void run(){ try { Thread.sleep(this.time);} catch(InterruptedException e){} System.out.println(”線程“+this.number+”:“+”休眠時間“+this.time);} public class TwoThread { public static void main(String[] args){ DelayPrintThread a=new DelayPrintThread(1);DelayPrintThread b=new DelayPrintThread(2);a.start();b.start();} } 4.import java.applet.Applet;import java.awt.*;import java.util.Date;import java.text.SimpleDateFormat;public class MultiThreadApplet extends Applet implements Runnable { Thread a;public void start(){ if(a==null){a=new Thread(this); a.start();} } public void stop(){ if(a!=null){ a.stop(); a=null;} } public void run(){} public void paint(Graphics g){SimpleDateFormat sdf=new SimpleDateFormat(”yyyy年MM月dd日E a hh時 mm分ss秒“);g.drawString(sdf.format(new Date()),50,100);} } public class Clock extends MultiThreadApplet{ public void run(){ repaint();try{a.sleep(1000);} catch(InterruptedException e){} }} 5.import java.sql.*;public class Statement{ public static void main(String args[])throws Exception { Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver“);Connection conn=DriverManager.getConnection(”jdbc:odbc:student“);Statement stmt=conn.createStatement();String Sql=”SELECT stu_id,stu_name,city FROM student WHERE stu_id=5“;String Sql=”INSERT INTO student(stu_id,stu_name,city)VALUES('5','小紅','徐州')“;String Sql=”DELETE FROM student WHERE stu_id=5“;int count=stmt.executeUpdate(Sql);System.out.println(”插入“+count+”行“);ResultSet rs=stmt.executeQuery(Sql);if(rs.next()){System.out.println(”行“+rs.getRow()+”:“+rs.getString(1)+”,“+rs.getString(2)+”,“+rs.getString(3));} else System.out.println(”沒有數據“);count=stmt.executeUpdate(Sql);rs=stmt.executeQuery(Sql);if(rs.next()){System.out.println(”行“+rs.getRow()+”:“+rs.getString(1)+”,“+rs.getString(2)+”,“+rs.getString(5));} else System.out.println(”沒有數據");} } 四、實驗結果與分析(程序運行結果及其分析)1.45 2.3.4.五、實驗體會(遇到問題及解決辦法,編程后的心得體會) 通過這次實驗,我基本能夠理解線程的運行了,學會調用Thread類中的系統函數以及掌握這些函數的作用是難點,start()是開辟一條新線程。子類重寫父類的run()方法,里面用sleep,來控制每個線程的休眠時間,但是得注意這里應該要用try-catch語句來捕獲中斷異常。 河北北方學院信息科學與工程學院 《Java程序設計》 實 驗 報 告 實驗學期 2014 至 2015 學年 第 2 學期 學生所在系部 信息科學與工程學院 年級 2012 專業班級 電子三班 學生姓名 馮洋 學號 201242220 任課教師 實驗成績 實驗七 GUI標準組件及事件處理 一、課程設計目的: 《面向對象程序設計》是一門實踐性很強的計算機專業基礎課程,課程設計是學習完該課程后進行的一次較全面的綜合練習。其目的在于通過實踐加深學生對面向對象程序設計的理論、方法和基礎知識的理解,掌握使用Java語言進行面向對象設計的基本方法,提高運用面向對象知識分析實際問題、解決實際問題的能力,提高學生的應用能力。 二、實驗要求: 設計一個簡單的文本編輯器,具有如下基本功能: 1)所見即所得的文本輸入; 2)能方便地選中文本、復制、刪除和插入文本; 3)具有一般編輯器所具有的查找和替換功能; 4)簡單的排版,如設置字體和字號等。 三、課程設計說明: 1、需求分析:簡單文本編輯器提供給用戶基本的純文本編輯功能,能夠將用戶錄入的文本存儲到本地磁盤中。能夠讀取磁盤中現有的純文本文件,以及方便用戶進行需要的編輯功能。文件操作能夠實現新建、保存、打開文檔等,編輯操作能過實現文本的剪貼、復制、粘貼等,格式操作能過實現字體設置、背景等,幫助操作能夠實現關于主題的查看等功能 2、概要設計: (一)其基本功能包括: ① 基本的文本操作功能。包括新建,保存,打開,保存。 ② 基本的編輯功能。包括復制,剪貼,粘貼。③ 基本的格式功能,字體。④ 簡單的幫助,關于主題。 (二)主要的組件包括: ① 基本的Frame框架; ② 菜單; ③ 打開文件對話框; ④ 保存文件對話框; ⑤ 顏色對話框; ⑥ 簡單的幫助框架。 3、程序說明: 整個記事本分成:Jframe程序主體框架,Jmenu菜單欄、JtextArea文本輸入區、PopupMenu右鍵菜單、JscrollPane滾動條、FonDialog字體類等。 本程序中首先定義一個Java Yang類繼承JFrame作為最底層容器。要想記事本完成需求分析中相應的功能,還必須添加事件監聽器。事件監聽器不僅要添加在菜單欄和內容輸入區,還需加在容器中。本程序中ActListener實現了ActionListener接口,用來監聽并處理所有菜單項和內容輸入區為事件源的事件。另外,還用來WindowListener來監聽處理容器關閉觸發的事件,WindowListener繼承了WindowsAdapter類并覆蓋了WindowsClosing方法。 四、程序調試: 1、調試分析: (1)關于打開、保存和退出我運用了文件對話框, openFileDialog、saveFileDialog和System.exit()以及文件輸入輸出流來實現,新建功能我選用了 textArea.setText()方法.(2)對于剪貼,粘貼,復制的實現則用 復制 String text = textArea.getSelectedText();StringSelection selection= new StringSelection(text);clipboard.setContents(selection,null);粘貼 Transferable contents = clipboard.getContents(this);if(contents==null)return;String text;text=“";try { text =(String)contents.getTransferData(DataFlavor.stringFlavor);} catch(Exception ex){ } textArea.replaceRange(text,textArea.getSelectionStart(),textArea.getSelectionEnd());(3)至于字體功能的實現,則是新建了一個字體類,在這個類中設置了字形,字體以及大小并且有字體樣式可預覽用戶當前的設置。FlowLayout()設置布局,setSize()設置大小add()添加需要用的原件。 添加監聽器獲取選擇用戶的字號大小 public void itemStateChanged(ItemEvent event){ size =(new Integer((String)event.getItem()).intValue());setCustomFont(new Font(name, type, size));} 設置字體 private void setCustomFont(Font customFont){ this.customFont = customFont;area.setFont(customFont);area.revalidate();} 獲取字體 public Font getCustomFont(){ return(this.customFont);} 附錄:源代碼 //記事本主體類 import java.awt.event.*;import java.awt.*;import java.io.*;import java.awt.datatransfer.*;import javax.swing.*; import java.awt.print.PrinterException; public class MiniNote extends JFrame implements ActionListener { JMenuBar menuBar = new JMenuBar();JMenu file = new JMenu(”文件(F)“), //菜單 edit = new JMenu(”編輯(E)“), format = new JMenu(”格式(O)“), view = new JMenu(”查看(V)“), help = new JMenu(”幫助(H)“); JMenuItem[] menuItem ={ //菜單下拉項 new JMenuItem(”新建(N)“), new JMenuItem(”打開(O)“), new JMenuItem(”保存(S)“), new JMenuItem(”打印(P)“), new JMenuItem(”全選(A)“), new JMenuItem(”復制(C)“), new JMenuItem(”剪切(T)“), new JMenuItem(”粘貼(P)“), new JMenuItem(”自動換行(W)“), new JMenuItem(”字體(F)“), new JMenuItem(”狀態欄(S)“), new JMenuItem(”幫助主題(H)“), new JMenuItem(”關于記事本(A)“), new JMenuItem(”頁面設置(U)“), new JMenuItem(”退出(X)“), new JMenuItem(”查找(F)“), new JMenuItem(”查找下一個(N)“), new JMenuItem(”替換(R)“)}; JPopupMenu popupMenu = new JPopupMenu();;//右鍵菜單 JMenuItem [] menuItem1 ={ new JMenuItem(”撤銷(Z)“), new JMenuItem(”剪切(X)“), new JMenuItem(”復制(C)“), new JMenuItem(”粘貼(V)“), new JMenuItem(”刪除(D)“), new JMenuItem(”全選(A)“), }; private JTextArea textArea;//文本區域 private JScrollPane js;//滾動條 private JPanel jp;private FileDialog openFileDialog;//打開保存對話框 private FileDialog saveFileDialog;private Toolkit toolKit;//獲取默認工具包。private Clipboard clipboard;//獲取系統剪切板 private String fileName;//設置默認的文件名 /** * MiniEdit 方法定義 * * 實現記事本初始化 * **/ public MiniNote(){ fileName = ”無標題“;toolKit = Toolkit.getDefaultToolkit();clipboard = toolKit.getSystemClipboard();textArea =new JTextArea();js = new JScrollPane(textArea);jp = new JPanel();openFileDialog = new FileDialog(this,”打開“,FileDialog.LOAD);saveFileDialog = new FileDialog(this,”另存為“,FileDialog.SAVE); js.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);jp.setLayout(new GridLayout(1,1));jp.add(js);textArea.setComponentPopupMenu(popupMenu);//文本區域添加右鍵 textArea.add(popupMenu);add(jp);setTitle(”迷你記事本“);setFont(new Font(”Times New Roman“,Font.PLAIN,15));setBackground(Color.white);setSize(800,600);setJMenuBar(menuBar);menuBar.add(file);menuBar.add(edit);menuBar.add(format);menuBar.add(view);menuBar.add(help);for(int i=0;i<4;i++){ file.add(menuItem[i]);edit.add(menuItem[i+4]);} for(int i=0;i<3;++i){ edit.add(menuItem[i+15]);} for(int i=0;i<2;++i){ format.add(menuItem[i+8]);help.add(menuItem[i+11]);} view.add(menuItem[10]);file.add(menuItem[14]);for(int i=0;i<6;++i){ popupMenu.add(menuItem1[i]);} //窗口監聽 addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ e.getWindow().dispose();System.exit(0);} });//注冊各個菜單項的事件監聽器 for(int i=0;i Object eventSource = e.getSource();if(eventSource == menuItem[0])//新建動作 { textArea.setText(”“);} else if(eventSource == menuItem[1])//打開動作 { openFileDialog.setVisible(true);fileName = openFileDialog.getDirectory()+openFileDialog.getFile();if(fileName!= null){ openFile(fileName);} } else if(eventSource ==menuItem[2])//保存動作 { saveFileDialog.setVisible(true);fileName = saveFileDialog.getDirectory()+saveFileDialog.getFile();if(fileName!=null){ writeFile(fileName);} } else if(eventSource==menuItem[14])//退出動作 { System.exit(0);} else if(eventSource == menuItem[4]||eventSource == menuItem1[5])//全選動作 { textArea.selectAll();} else if(eventSource == menuItem[5]||eventSource == menuItem1[2])//復制動作 { String text = textArea.getSelectedText();StringSelection selection= new StringSelection(text);clipboard.setContents(selection,null);} else if(eventSource == menuItem[6]||eventSource == menuItem1[1])//剪切動作 { String text = textArea.getSelectedText();StringSelection selection = new StringSelection(text);clipboard.setContents(selection,null);textArea.replaceRange(”“, textArea.getSelectionStart(), textArea.getSelectionEnd());} else if(eventSource == menuItem[7]||eventSource == menuItem1[3])//粘貼動作 { Transferable contents = clipboard.getContents(this);if(contents==null)return;String text;text=”“;try { text =(String)contents.getTransferData(DataFlavor.stringFlavor);} catch(Exception ex){ } textArea.replaceRange(text, textArea.getSelectionStart(),textArea.getSelectionEnd());} else if(eventSource == menuItem[8])//自動換行 { if(textArea.getLineWrap())textArea.setLineWrap(false);else textArea.setLineWrap(true); } else if(eventSource == menuItem[9])//字體 {//實例化字體類 FontDialog fontdialog = new FontDialog(new JFrame(),”字體“,true);textArea.setFont(fontdialog.showFontDialog());//設置字體 } else if(eventSource == menuItem[11])//幫助 { try { String filePath = ”C:/WINDOWS/Help/notepad.hlp“;Runtime.getRuntime().exec(”cmd.exe /c “+filePath);} catch(Exception ee){ JOptionPane.showMessageDialog(this,”打開系統的記事本幫助文件出錯!“,”錯誤信息“,JOptionPane.INFORMATION_MESSAGE);} } else if(eventSource == menuItem[12])//關于記事本 { String help = ”記事本 版本1.0n操作系統:WIN 8 n編譯器:eclipsen版權“ + ”所有: ESTON YANG n最終解釋權歸本人所有“ + ”“ + ”nBuild By 馮洋“ + ”n課程設計:JAVA“;JOptionPane.showConfirmDialog(null, help, ”關于記事本“, JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE); } else if(eventSource == menuItem[15]||eventSource == menuItem[16])//查找下一個 { search(); } else if(eventSource == menuItem[17])//替換 { substitude();} else if(eventSource == menuItem[3])//打印 { try { textArea.print();} catch(PrinterException e1){ e1.printStackTrace();} } } /** * openFile方法 * * 從TXT讀進數據到記事本 * **/ public void openFile(String fileName){ try { File file = new File(fileName);FileReader readIn = new FileReader(file);int size =(int)file.length();int charsRead = 0;char[] content = new char[size];while(readIn.ready()){ charsRead += readIn.read(content,charsRead,size-charsRead);} readIn.close();textArea.setText(new String(content,0,charsRead));} catch(Exception e){ System.out.println(”Error opening file!“);} } /** * saveFile方法 * * 從記事本寫進數據到TXT * **/ public void writeFile(String fileName){ try { File file = new File(fileName);FileWriter write = new FileWriter(file);write.write(textArea.getText());write.close();} catch(Exception e){ System.out.println(”Error closing file!“);} } /** * substitude方法 * * 實現替換功能 * */ public void substitude(){ final JDialog findDialog = new JDialog(this, ”查找與替換“, true);Container con = findDialog.getContentPane();con.setLayout(new FlowLayout(FlowLayout.LEFT));JLabel searchContentLabel = new JLabel(”查找內容(N):“);JLabel replaceContentLabel = new JLabel(”替換為(P):“);final JTextField findText = new JTextField(30);final JTextField replaceText = new JTextField(30);final JCheckBox matchcase = new JCheckBox(”區分大小寫(C)“);ButtonGroup bGroup = new ButtonGroup();final JRadioButton up = new JRadioButton(”向上(U)“);final JRadioButton down = new JRadioButton(”向下(D)“);down.setSelected(true);//默認向下搜索 bGroup.add(up);bGroup.add(down); JButton searchNext = new JButton(”查找下一個(F)“);JButton replace = new JButton(”替換(R)“);final JButton replaceAll = new JButton(”全部替換(A)“); //”替換“按鈕的事件處理 replace.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ if(replaceText.getText().length()== 0 && textArea.getSelectedText()!= null) textArea.replaceSelection(”“);if(replaceText.getText().length()> 0 && textArea.getSelectedText()!= null) textArea.replaceSelection(replaceText.getText());} }); //”替換全部“按鈕的事件處理 replaceAll.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ textArea.setCaretPosition(0);//將光標放到編輯區開頭 int a = 0, b = 0, replaceCount = 0;if(findText.getText().length()== 0){ JOptionPane.showMessageDialog(findDialog, ”請填寫查找內容!“, ”提示“,JOptionPane.WARNING_MESSAGE);findText.requestFocus(true);return;} while(a >-1){ int FindStartPos = textArea.getCaretPosition();//獲取光標位置 String str1, str2, str3, str4, strA, strB;str1 = textArea.getText();str2 = str1.toLowerCase();str3 = findText.getText();str4 = str3.toLowerCase();if(matchcase.isSelected())//大小寫區分 { strA = str1;strB = str3;} else { strA = str2;strB = str4;} if(up.isSelected())//向上搜索 { if(textArea.getSelectedText()== null){ a = strA.lastIndexOf(strB, FindStartPos1);} } else //向下搜索 { if(textArea.getSelectedText()== null){ a = strA.indexOf(strB, FindStartPos); } else { a = strA.indexOf(strB, FindStartPos-findText.getText().length()+ 1);} } if(a >-1){ if(up.isSelected()){ textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} else if(down.isSelected()){ textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} } else { if(replaceCount == 0){ JOptionPane.showMessageDialog(findDialog,”找不到您查找的內容!“, ”記事本“,JOptionPane.INFORMATION_MESSAGE);} else { JOptionPane.showMessageDialog(findDialog, ”成功替換“+ replaceCount + ”個匹配內容!“, ”替換成功“,JOptionPane.INFORMATION_MESSAGE);} } if(replaceText.getText().length()== 0&& textArea.getSelectedText()!= null)//用空字符代替選定內容 { textArea.replaceSelection(”“);replaceCount++;} if(replaceText.getText().length()> 0&& textArea.getSelectedText()!= null)//用指定字符代替選定內容 { textArea.replaceSelection(replaceText.getText());replaceCount++;} }//end while } }); //”查找下一個“按鈕事件處理 searchNext.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ int a = 0, b = 0;int FindStartPos = textArea.getCaretPosition();String str1, str2, str3, str4, strA, strB;str1 = textArea.getText();str2 = str1.toLowerCase();str3 = findText.getText();str4 = str3.toLowerCase(); //”區分大小寫“的CheckBox被選中 if(matchcase.isSelected())//區分大小寫 { strA = str1;strB = str3;} else //不區分大小寫 { strA = str2;strB = str4;} if(up.isSelected())//向上搜索 { if(textArea.getSelectedText()== null){ a = strA.lastIndexOf(strB, FindStartPosfindText.getText().length()findText.getText().length()+ 1);} } if(a >-1){ if(up.isSelected()){ textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} else if(down.isSelected()){ textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} } else { JOptionPane.showMessageDialog(null, ”找不到您查找的內容!“, ”記事本“, JOptionPane.INFORMATION_MESSAGE);} } }); //”取消“按鈕及事件處理 JButton cancel = new JButton(”取消“);cancel.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ findDialog.dispose();} });//創建”查找與替換“對話框的界面 JPanel bottomPanel = new JPanel();JPanel centerPanel = new JPanel();JPanel topPanel = new JPanel();JPanel direction = new JPanel(); direction.setBorder(BorderFactory.createTitledBorder(”方向“));direction.add(up);direction.add(down); JPanel replacePanel = new JPanel();replacePanel.setLayout(new GridLayout(1, 2));replacePanel.add(searchNext);replacePanel.add(replace);replacePanel.add(replaceAll);replacePanel.add(cancel); topPanel.add(searchContentLabel);topPanel.add(findText); centerPanel.add(replaceContentLabel);centerPanel.add(replaceText);centerPanel.add(replacePanel); bottomPanel.add(matchcase);bottomPanel.add(direction); con.add(replacePanel);con.add(topPanel);con.add(centerPanel);con.add(bottomPanel); //設置”查找與替換“對話框的大小、可更改大小(否)、位置和可見性 findDialog.setSize(550, 240);findDialog.setResizable(true);findDialog.setLocation(230, 280);findDialog.setVisible(true);}//方法mySearch()結束 /** * search方法 * * 實現查找功能 * */ public void search(){ final JDialog findDialog = new JDialog(this, ”查找下一個“, true);Container con = findDialog.getContentPane();con.setLayout(new FlowLayout(FlowLayout.LEFT));JLabel searchContentLabel = new JLabel(” 查找內容(N):“); final JTextField findText = new JTextField(17);final JCheckBox matchcase = new JCheckBox(”區分大小寫(C)“);ButtonGroup bGroup = new ButtonGroup();final JRadioButton up = new JRadioButton(”向上(U)“);final JRadioButton down = new JRadioButton(”向下(D)“);down.setSelected(true);//默認向下搜索 bGroup.add(up);bGroup.add(down); JButton searchNext = new JButton(”查找下一個(F)“); //”查找下一個“按鈕事件處理 searchNext.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ int a = 0, b = 0;int FindStartPos = textArea.getCaretPosition();String str1, str2, str3, str4, strA, strB;str1 = textArea.getText();str2 = str1.toLowerCase();str3 = findText.getText();str4 = str3.toLowerCase(); //”區分大小寫“的CheckBox被選中 if(matchcase.isSelected())//不區分大小寫 { strA = str1;strB = str3;} else //區分大小寫 { strA = str2;strB = str4;} if(up.isSelected())//向上搜索 { if(textArea.getSelectedText()== null){ a = strA.lastIndexOf(strB, FindStartPosfindText.getText().length()findText.getText().length()+ 1);} } if(a >-1){ if(up.isSelected()){ textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} else if(down.isSelected()){ textArea.setCaretPosition(a);b = findText.getText().length();textArea.select(a, a + b);} } else { JOptionPane.showMessageDialog(null, ”找不到您查找的內容!“, ”記事本“, JOptionPane.INFORMATION_MESSAGE);} } }); //”取消“按鈕及事件處理 JButton cancel = new JButton(” 取消 “);cancel.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ findDialog.dispose();} });//創建”替換“對話框的界面 JPanel bottomPanel = new JPanel();JPanel centerPanel = new JPanel();JPanel topPanel = new JPanel();JPanel direction = new JPanel();direction.setBorder(BorderFactory.createTitledBorder(”方向“));direction.add(up);direction.add(down);topPanel.add(searchContentLabel);topPanel.add(findText);topPanel.add(searchNext);bottomPanel.add(matchcase);bottomPanel.add(direction);bottomPanel.add(cancel);con.add(topPanel);con.add(centerPanel);con.add(bottomPanel);//設置”替換“對話框的大小、可更改大小(否)、位置和可見性 findDialog.setSize(425, 200);findDialog.setResizable(true);findDialog.setLocation(230, 280);findDialog.setVisible(true);} /** * 主函數 * * * **/ public static void main(String[] args){ MiniNote note = new MiniNote();note.setVisible(true);} } //字體類 import java.awt.Font;import java.awt.GraphicsEnvironment;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.border.*;import java.util.*;public class FontDialog { private Dialog fontdialog;private JButton okButton, cancelButton;private int width = 480;private int height = 250;private String name = ”Serif“;private int type = 0;private int size = 12;private Font customFont = new Font(”宋體“, Font.ITALIC, 12);private boolean okpressed = false;private boolean cancelpressed = false;private JLabel lbl1 = new JLabel(”字體:“);private JLabel lbl2 = new JLabel(”字形:“);private JLabel lbl3 = new JLabel(”大小:“);private JTextArea area;String[] zx = { ”常規“, ”加粗“, ”斜體“, ”基線“ };String[] dx = {”8“ , ”9“ , ”10“, ”12“, ”14“, ”15“, ”16“, ”18“,”20“, ”21“, ”22“, ”24“, ”26“, ”28“, ”30“, ”36“,”48“, ”54“,”72“ , ”89“};JLabel lbl = new JLabel(”字體樣式Style“);private JComboBox cb1, cb3 = new JComboBox(dx), cb2 = new JComboBox(zx);private String[] zt; public FontDialog(Frame owner, String title, boolean modal){ init();fontdialog = new Dialog(owner, title, modal);fontdialog.setLocation(owner.getLocation());fontdialog.setLayout(new FlowLayout());fontdialog.setSize(getWidth(), getHeight());fontdialog.add(lbl1);fontdialog.add(cb1);fontdialog.add(lbl2);fontdialog.add(cb2);fontdialog.add(lbl3);fontdialog.add(cb3);fontdialog.add(okButton);fontdialog.add(cancelButton);fontdialog.add(area);fontdialog.setResizable(false);fontdialog.setAlwaysOnTop(true);cancelButton.addActionListener(new fontListener());okButton.addActionListener(new fontListener());fontdialog.addWindowListener(new fontListener()); cb1.addItemListener(new ItemListener(){ // public void itemStateChanged(ItemEvent event){ //獲取選擇用戶的字體類型 name =(String)event.getItem();setCustomFont(new Font(name, type, size));} }); cb2.addItemListener(new ItemListener(){ // public void itemStateChanged(ItemEvent event){ //獲取選擇用戶的字形 String s =(String)event.getItem();if(s.equals(”常規“)){ type = Font.PLAIN;setCustomFont(new Font(name, type, size));} else if(s.equals(”加粗“)){ type = Font.BOLD; 字體動作 添加監聽器字形動作 添加監聽器 setCustomFont(new Font(name, type, size));} else if(s.equals(”斜體“)){ type = Font.ITALIC;setCustomFont(new Font(name, type, size));} else { type = Font.CENTER_BASELINE;setCustomFont(new Font(name, type, size));} } }); cb3.addItemListener(new ItemListener(){ //大小動作 public void itemStateChanged(ItemEvent event){ //添加監聽器獲取選擇用戶的字號大小 size =(new Integer((String)event.getItem()).intValue());setCustomFont(new Font(name, type, size));} }); } public Font showFontDialog(){ fontdialog.setVisible(true);if(okpressed){ return getCustomFont();} else { return customFont;} } private void init(){ //初始化 okButton = new JButton(”確定“);cancelButton = new JButton(”取消“);GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();zt = ge.getAvailableFontFamilyNames();cb1 = new JComboBox(zt);cb1.setMaximumRowCount(6);area = new JTextArea(6, 30);cb3 = new JComboBox(dx);cb3.setMaximumRowCount(6);okButton.setFocusable(true);area.setEditable(false);area.setText(new Date().toString());area.setBorder(new TitledBorder(”字體樣式"));} public void setWidth(int width){ this.width = width;} public void setHeight(int height){ this.height = height;} private int getWidth(){ return(this.width);} private int getHeight(){ return(this.height);} private void setCustomFont(Font customFont)//{ this.customFont = customFont;area.setFont(customFont);area.revalidate();} public String toString(){ return FontDialog.class.toString();} 設置字體 public Font getCustomFont()//獲取字體 { return(this.customFont);} private class fontListener extends WindowAdapter implements ActionListener //監聽事件類 { public void windowClosing(WindowEvent e){ fontdialog.dispose();} public void actionPerformed(ActionEvent e){ if(e.getSource()== cancelButton){ fontdialog.dispose();cancelpressed = true;} else if(e.getSource()== okButton){ okpressed = true;setCustomFont(new Font(name, type, size));fontdialog.dispose();} } } } 學 生 實 驗 報 告 冊 2013——2014學年第1學期 項目名稱: Java Web 學院: 信電 班級: 11計算機科學與技術一班 學號: 155140007 姓名: 伍振東 指導教師: 李竹林 完成時間: 2013/9/28 一、實驗要求 1.用HTML語言編寫如下樣式的網頁 2.可以用Dreamweaver,推薦手動編寫HTML帶代碼 3.圖片從清華大學的網站自己取得。http://www.tmdps.cn“> 文檔為doc格式 實驗報告一、 實驗目的
鞏固復習課上所講內容,進一步熟悉面向對象編程。
二、 實驗內容
編寫程序求點到原點的距離三、 程序清單及運行結果
abstractclass Distance
{
abstra...... Java實驗二實驗二類與對象 實驗目的 1、 掌握面向對象程序設計的方法和Java作為面向對象程序設計語言的特點; 2、 掌握修飾符和構造方法的使用規則; 3、 掌握接口的特點、結構...... Java聊天室實驗報告 班 級:學 號:姓 名: ****** ******** *** 目錄: 一、實驗目的.......................................................3 二、所需技術 ...................... 課程名稱: 學生學號:學生姓名: 所屬院部:指導教師: 學生實驗報告 (理工類) JAVA程序設計專業班級: 20 15——20 16學年第2學期金陵科技學院教務處制 實驗項目名稱:JAVA編程基礎實驗...... 實驗項目名稱:實驗4 基于Socket的網絡編程 【實驗目的】 1、 理解Java的基于套接字的網絡通信原理。 2、 理解客戶端和服務器的概念。 3、 學習使用套接字實現客戶端和服務...... 廣東工業大學實驗報告 學院 專業 班學號姓名 成績評定_______ 實驗5 題目繼承與接口實驗 課程名稱Java與面向對象程序設計 一.實驗目的 (1)學習類的繼承、子類在對象中調用...... Homework3實驗報告 一、實驗目的與要求 1、掌握Java中類和接口的基本知識; 2、繼承的基本知識; 3、集合的基本操作 二、實驗內容 1.PIMCollection 類 創建一個可以管理PIMEnti...... 中 南 民 族 大 學 實 驗 報 告 2010—2011第二學期 課程名稱: Java程序設計院系:計算機科學學院年級: 2009 專業:計算機科學與技術大班 學號: 09061060 姓 名: 李亞巧 指......第四篇:JAVA實驗報告
第五篇:java實驗報告
聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。 JAVA實驗報告
java實驗二附答案
JAVA聊天室實驗報告
Java實驗報告電子稿(匯編)
java實驗報告4
java實驗報告5范文合集
Java上機實驗報告
java實驗報告(精選五篇)