1、課程收獲與不足
自己的收獲
經過一個學期的JAVA課程學習,現在雖說算不上什麼專業的JAVA程序員,但我還是很有收獲。了解了這門語言,探索了這門語言,認知了這門語言。我從一個什麼都不懂的菜鳥,到現在能夠自己編一個簡單的程序並使其跑起來,在本學期末還與小組成員成功編譯運行了一個JAVA游戲,感覺十分有成就感呢!回首之前的學習歷程,要想真正有所學,有所得,必須持之以恆,踏踏實實的跟著婁老師的「方針政策」走,不要有排斥心理。剛開始學習JAVA的時候的確不習慣,覺得很累,每周的java學習與博客總結都會佔用周末業余時間。不過心態一定要好,反正要做,還不如把它做好,不要敷衍自己。萬事開頭難,習慣成自然!哈哈哈,雖然已經學了一學期JAVA了,但其實還有好多好多東西是需要自己去探索的。學習JAVA應該是循環漸進,按部就班,腳踏實地的。對了,JAVA課程是我第一次接觸翻轉課堂,翻轉課堂講究的是自己主動學習,主動探索,然後把問題反饋給老師,老師在課堂上解答。不過由於c語言學的不是很好,所以剛開始看到JAVA的時候,看著源代碼,都不知道是什麼意思,看書的時候一看到源代碼就頭疼,因為根本看不懂,那段時間挺挫敗的。不過幸好每周都要考試!所以這也是驅動我學習的一個主要原因,想要拿高分,就得花時間看,把不懂的想盡辦法弄懂。於是最開始最艱難的那段時間,我大部分課下時間都花在JAVA上,不懂的問高其和周正一,再加上翻書,網上查閱資料。三周下來,效果也挺明顯的,並且我覺得JAVA這門語言雖然很高級但並不復雜,很多功能都是可以直接調用的,不需要自己親手去編。世上無難事,只怕有心人。對於任何新生事物,我們首先不要排斥,如果可以,帶著興趣去探索,必定其樂無窮!受益匪淺!這學期也是我第一次接觸到博客園。我感覺博客園真的是一個集思廣益的地方,大家可以把自己的學習心得體會都通過博客的形式發表出來,然後其他人就可以去閱讀、去參考別人成功的方法,有什麼問題也可以建立一個小組,然後博主會和大家互動,共同探討,解決問題。一學期的博客園生涯讓我逐漸喜歡上了這里。記住,學JAVA,一定要做到課前預習與課後復習,書上的概念要理解透徹,代碼一定要過手;多和同學溝通,互相學習,取長補短。婁老師說過,知識是學不完的,重要的是要找到一種適合自己的高效的學習方法,這將受益終生。
2、自己需要改進的地方
我覺得應該多看別人的博客,多與別人進行交流,但是本學期學習壓力較大,這方面做得不夠好,所以這是我的一大遺憾!其次,對JAVA的不同庫的掌握需要增進,一旦對JAVA各種庫的引用融會貫通,對較大程序的編寫就能事半功倍,效率遠超C語言,這也是JAVA最吸引我的一個地方。還有就是學JAVA千萬不要浮躁,不要趕進度。說到浮躁,這也是一個很值得我深思的問題,我覺得我剛開始還沒完全接受JAVA的時候,就比較浮躁。做事停留在表面,敷衍。經過後來逐漸調整,才慢慢改變。真正學習的時候,浮躁會使你失去很多。
如果有結對,寫一下你提供的幫助或接受了什麼幫助,並對老師提供參考意見
在實驗三和實驗五階段都有結對的部分。通過結對,我深刻地明白了團隊合作的重要性。團隊精神能推動團隊運作和發展。在團隊精神的作用下,團隊成員產生了互相關心、互相幫助的交互行為,顯示出關心團隊的責任感,並努力自覺地維護團隊的集體榮譽。我覺得結對編程這一環節很好,不僅讓大家能夠明確分工,合作的編寫出程序,而且能培養大家的默契,讓我們能夠在實際操作過程中更好的編寫代碼。要想成功編寫程序,這一過程是很復雜的,而團隊方式可以使其簡單許多,遇到問題的時候可以大家一起想,集思廣益,而且團隊操作在很大程度上還可以實現優勢的互補(比如git代碼,然後共享)。
3、給學弟學妹們的意見
如果重新學習這門課,怎麼做才可以學得更好?
如果可以重新學習這門課的話,我想我會做的更好。首先我會找一本好的書本教材,然後輔助看教學視頻。因為翻轉課堂更強調的是自己主動學習,主動探索,主動發現問題。一本好的教材,可以讓你更快更好的進入 Java的世界,然後看視頻是一種比較直觀的輔助學習方式。建議先看課本,發現不懂的地方,再結合視頻,這樣效果更好,如果視頻上沒有講到的,就通過其他方式解決。老師之前會發視頻鏈接,那裡面講的內容(畢向東老師主講)都很不錯。書上概念與代碼搞懂了後,自己一定要主動動手敲代碼!因為看懂和學懂完全是兩回事,一定要學好基本語法,弄清 Java語言的特點。剛開始學習時,有些知識可能有些難懂,自己也不會敲代碼。不過這沒關系,這很正常。多看多問,多實踐,慢慢的你就入門了。千萬不要投機取巧!主動敲代碼真的是學JAVA的精髓!JAVA和其他的編程語言一樣,在學懂理論後,一定要實踐。只有多動手編程,哪怕是簡單的小程序,重復實現書上簡單的例子,也是在積累和提高。
4、問卷調查
你覺得這門課老師應該繼續做哪一件事情?
老師應該繼續要求扇貝打卡與五筆打字練習,然後期末加分。這種方法很值得提倡,希望能夠繼續做下去。這不僅可以調動大家學習的積極性,而且還讓我們的英語水平提高了很多,對於四六級以及以後在工作中打字速度等其他的方面都有很大的幫助。在博客園里發表博客也是很好的一種總結心得體會的方法,值得提倡。博客園是一個集思廣益的地方,大家把自己的學習心得體會都通過博客的形式發表出來,然後大家可以交流意見,有什麼不懂的也可以直接在問題小組里提出來,共同探討,共同解決問題。這種感覺很棒。對了,每周一考我也覺得這必不可少,可以敦促學生的學習進度。
你覺得這門課老師應該停止做哪一件事情?
感覺每周的學習任務還是偏重了,幾乎要佔據半個周末的時間來搞JAVA。老師應根據每周學習內容的難易程度,合理調配學習任務量。
你覺得這門課老師應該開始做什麼新的事情?
希望老師在課上多講一點關於教材知識的內容(包括實驗),讓我們能夠更高效更有針對性的去學習JAVA。因為教材的內容太多,盲目的去看就會浪費很多時間。如果因為趕進度,只是囫圇吞棗的看一遍教材的話,我們就不能很好的去理解java的相關知識。
B. Java程序設計作業
5分
C. JAVA編程作業
importjava.math.BigDecimal;
importjava.util.Random;
publicclassIncrease{
publicstaticbooleanisPrime(inta){
booleanflag=true;
if(a<2){//素數不小於2
returnfalse;
}else{
for(inti=2;i<=Math.sqrt(a);i++){
if(a%i==0){//若能被整除,則說明不是素數,返回false
flag=false;
break;//跳出循環
}
}
}
returnflag;
}
publicstaticvoidtest1(){
inti,n,k=0;
System.out.println("1-1000內素數");
for(n=3;n<=1000;n++){//3~1000的所有數
i=2;
while(i<n){
if(n%i==0)break;//若能整除說明n不是素數,跳出當前循環
i++;
}
if(i==n){//如果i==n則說明n不能被2~n-1整除,是素數
k++;//統計輸出數的個數
System.out.print(i+" ");
if(k%6==0)//每輸出5個則換行
System.out.println();
}
}
}
publicstaticvoidtest2()
{
Randomr=newRandom();
System.out.println(r.nextInt(301)-100);
}
publicstaticinttest3(intm,intn){
//輾轉相除法
intr;
do{
if(m<n)
{
r=m;
m=n;
n=r;
}
r=m%n;
m=n;
n=r;
}while(r!=0);
returnm;
}
publicstaticdoubletest4(intn){
doublee=1f;
doubletotal=1.0;
for(inti=0;i<n;i++)
{
total/=i+1;
e+=total;
}
BigDecimalb=newBigDecimal(e);
e=b.setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue();//表明四捨五入,保留四位小數
returne;
}
publicstaticvoidmain(String[]args){
//第一題測試
System.out.println(isPrime(131));
test1();
//第二題測試
test2();
//第三題測試
System.out.println("最大公約數為:"+test3(1302,19924));
//第四題測試
System.out.println("e="+test4(100));
}
}
運行結果:
true
1-1000內素數
3 5 7 11 13 17
19 23 29 31 37 41
43 47 53 59 61 67
71 73 79 83 89 97
101 103 107 109 113 127
131 137 139 149 151 157
163 167 173 179 181 191
193 197 199 211 223 227
229 233 239 241 251 257
263 269 271 277 281 283
293 307 311 313 317 331
337 347 349 353 359 367
373 379 383 389 397 401
409 419 421 431 433 439
443 449 457 461 463 467
479 487 491 499 503 509
521 523 541 547 557 563
569 571 577 587 593 599
601 607 613 617 619 631
641 643 647 653 659 661
673 677 683 691 701 709
719 727 733 739 743 751
757 761 769 773 787 797
809 811 821 823 827 829
839 853 857 859 863 877
881 883 887 907 911 919
929 937 941 947 953 967
971 977 983 991 997 106
最大公約數為:2
e=2.7183
D. java實驗報告總結
源代碼:
public class Exe1_1 {
public static void main (String args[]){
byte a1=127;
int a2=12345;
long a3=123456789L;
float a4=1.23e-5f;
double a5=1.4567e3;
char a6=65;
boolean a7=true;
System.out.println("a1="+a1+"\na2="+a2+"\na3="+a3+"\na4="+a4+"\na5="+a5+"\na6="+a6+"\na7="+a7);
}
}運行結果:
2.編寫Java小應用程序,輸出兩行字元串:「Java很有趣。」和「努力學習Java編程。」,輸出的起點坐標是(20,20),行距是50像素。源程序代碼:
import java.awt.Graphics;
import java.applet.Applet;
public class Exe1_2 extends Applet{
public void paint(Graphics g){
g.drawString("Java很有趣。",20,20);
g.drawString("努力學習Java編程。",20,70);
}
}運行情況:
3.使用算術運算符得到一個4位十進制數的各位數字並輸出,然後輸出該數的逆序數和各位數字平方後相加的和。
源程序代碼:
public class Exe1_3 {
public static void main (String args[]){
int n=3756,a,b,c,d,n1;
a=n/1000;
b=(n-1000*a)/100;
d=n%10;
c=(n%100-d)/10;
System.out.println("3756的逆序數為:"+d+" "+c+" "+b+" "+a);
System.out.print("各位數字平方後相加的和為:");
System.out.print(a*a+b*b+c*c+d*d);
}
}
運行結果:
三、實驗總結(是否完成實驗、實驗過程中的問題以及解決方法分析等)
本次是我第一次使用JAVA來進行編程,感覺很是不一樣,在前兩節課中我們學習了有關Java的一些簡單知識。然後這次的實驗是對最初的一種練習。
在第一題中,我們重要是認識java的運行環境,並且了解各種變數的數據類型。只要通過簡單的語句就可以通過運行。其中出現了一些單詞的拼寫錯誤,這些是可以修改正確的。第二題我們練習的十一個小的applet應用程序,需要設置一個網頁來顯示,這是一個很不一樣的地方,最後成功測試,裡面需要注意的是顯示位置的問題。第三題我們做的是一個有演算法要求的解決問題,在測試中出現了一點小問題,程序的演算法出了錯。還有一個問題是有關於顯示問題,最後的數據輸出需要用到兩行分別顯示字元和數據,這樣才不會出錯。
E. JAVA編程作業
網上找的,你試試能用嗎
public class Student implements Comparable{
public Student(String no, String name) {
this.no = no;
this.name = name;
}
public Student() {
}
public Student(String no, String name, double english, double maths,
double computer, double sum) {
this.no = no;
this.name = name;
this.english = english;
this.maths = maths;
this.computer = computer;
this.sum = sum;
}
private String no;
private String name;
private double english;
private double maths;
private double computer;
private Double sum=0.0;
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getEnglish() {
return english;
}
public void setEnglish(double english) {
this.english = english;
sum+=english;
}
public double getMaths() {
return maths;
}
public void setMaths(double maths) {
this.maths = maths;
sum+=maths;
}
public double getComputer() {
return computer;
}
public void setComputer(double computer) {
this.computer = computer;
sum+=computer;
}
public Double getSum() {
return sum;
}
public void setSum(Double sum) {
this.sum = sum;
}
public String toString() {
return "學號:"+no+"姓名"+name+"英語"+english+"數學"+maths+"計算機"+computer+"總成績"+sum;
}
public int compareTo(Object o) {
return sum.compareTo(((Student)o).getSum());
}
public Double sum(){
return english+maths+computer;
}
public Double testScore(){
return sum/3;
}
}
public class StudentXW extends Student{
public StudentXW(String no, String name) {
super(no,name);
}
public StudentXW() {
super();
}
private String ty;
public String getDuty() {
return ty;
}
public void setDuty(String ty) {
this.ty = ty;
}
public Double testScore() {
return super.testScore()+3;
}
}
public class StudentBZ extends Student{
public StudentBZ(String no, String name) {
super(no,name);
}
public StudentBZ() {
super();
}
private String ty;
public String getDuty() {
return ty;
}
public void setDuty(String ty) {
this.ty = ty;
}
public Double testScore() {
return super.testScore()+5;
}
}
public class Test {
public static void main(String[] args) {
Student student1=new Student("001","1");
student1.setEnglish(60.0);
student1.setMaths(60.0);
student1.setComputer(60.0);
System.out.println(student1+"測試成績是"+student1.testScore());
Student student2=new StudentXW("002","2");
student2.setEnglish(70.0);
student2.setMaths(70.0);
student2.setComputer(70.0);
System.out.println(student2+"測試成績是"+student2.testScore());
Student student3=new StudentBZ("003","3");
student3.setEnglish(80.0);
student3.setMaths(80.0);
student3.setComputer(80.0);
System.out.println(student3+"測試成績是"+student3.testScore());
}
}
F. java程序設計 綜合作業報告求解答
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.;
public class Test extends JFrame implements ActionListener{
JMenuBar menuBar;
JMenu file;
JMenu newfile;
JMenuItem wenJianJia;
JMenuItem javaWenJianJia;
JMenuItem open;
JMenuItem exit;
JMenu edit;
JMenuItem cheXiao;
JMenuItem chongZhuo;
JMenuItem jianQie;
JMenuItem fuZhi;
JMenuItem zhanTie;
JMenuItem shanChu;
JMenuItem chaZhao;
JMenuItem tiHuan;
public static void main(String[] str){
new Test();
}
private void setLookAndFeel(){
UIManager.LookAndFeelInfo[] infos = UIManager.getInstalledLookAndFeels();
for(UIManager.LookAndFeelInfo info : infos)
{
if(info.getName().toLowerCase().equals("window"))
{
try {
UIManager.setLookAndFeel(info.getClassName());
SwingUtilities.updateComponentTreeUI(Test.this);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch ( e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public Test(){
menuBar = new JMenuBar();
file = new JMenu("文件");
newfile = new JMenu("新建");
wenJianJia = new JMenuItem("文件夾");
javaWenJianJia = new JMenuItem("Java文件夾");
open = new JMenuItem("打開");
exit = new JMenuItem("退出");
exit.addActionListener(this);
newfile.add(wenJianJia);
newfile.add(javaWenJianJia);
file.add(newfile);
file.add(open);
file.add(exit);
edit = new JMenu("編輯");
cheXiao = new JMenuItem("撤銷");
chongZhuo = new JMenuItem("重做");
jianQie = new JMenuItem("剪切");
fuZhi = new JMenuItem("復制");
zhanTie = new JMenuItem("粘貼");
shanChu = new JMenuItem("刪除");
chaZhao = new JMenuItem("查找");
tiHuan = new JMenuItem("替換");
edit.add(cheXiao);
edit.add(chongZhuo);
edit.add(jianQie);
edit.add(fuZhi);
edit.add(zhanTie);
edit.add(shanChu);
edit.add(chaZhao);
edit.add(tiHuan);
menuBar.add(file);
menuBar.add(edit);
this.setJMenuBar(menuBar);
this.setSize(600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLookAndFeel();
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == exit)
System.exit(0);
}
}
G. java編程作業
public class Customer {
private String memberName;
private int memberNo;
public Customer(String memberName,int memberNo){
this.memberName = memberName;
this.memberNo = memberNo;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public int getMemberNo() {
return memberNo;
}
public void setMemberNo(int memberNo) {
this.memberNo = memberNo;
}
}
----------------------------------分界線---------------------------------------------------
import java.util.ArrayList;
public class CustManager {
private static ArrayList<Customer> list = new ArrayList<Customer>();
public void addCust(String memberName,int memberNo){
list.add(new Customer(memberName, memberNo));
}
public int searchMemberByName(String memberName){
if(memberName == null || memberName.equals("")){
return 1;
}
for(Customer c : list){
if(memberName.equals(c.getMemberName())){
return c.getMemberNo();
}
}
return 0;
}
}
----------------------------------分界線---------------------------------------------------
public class Test {
public static void main(String[] args) {
CustManager custManager = new CustManager();
custManager.addCust("張三", 1);
custManager.addCust("李四", 2);
custManager.addCust("王五", 3);
custManager.addCust("馬六", 4);
System.out.println(custManager.searchMemberByName("馬六"));
}
}
H. 最近老師讓做個JAVA大作業,還要附帶項目報告
學生的話,主要就是項目介紹:1項目名稱,2項目用途,3項目功能介紹以及操作4項目意義
I. JAVA實訓報告
1、 實訓的題目及簡介:
題目:java計算器應用程序
簡介:通過本程序可以實現計算器的基本功能。程序是Frame類的子類。使用GridLayout的布局方式對組件進行布局,用Panel類的容器存放按扭、文本框組件,程序中也用到大量的else-----if語句。
2、 設計說明:
一實驗目的
通過實訓能夠結合實例進一步理解面向對象程序設計的基本概念,掌握程序設計的基本方法和技巧,靈活的使用包,進一步的理解介面,熟練的掌握在介面中對事件的實現。深入理解和靈活運用面向對象程序設計的基本特性,培養良好的程序設計風格,提高抽象思維、邏輯思維的能力。
二實驗內容
編寫一個實現計算器應用程序
三 程序介紹及其功能的實現
程序需要導入import java.awt.*、 import java.awt.event.*、 import java.lang.*、 import javax.swing.*包。①程序的基本框架是:首先定義一個Frame類的子類,之後聲明三個面板的布局,即定義了GridLayout類的三個對象gl1、gl2、gl3。之後是定義了Panel類的容器的四個對象p0、p1、p2、p3,其中p0用來存放顯示屏文本框組件,p1採用gl1布局,用來存放刪除和歸零按鈕,p3採用gl3布局,用來存放數字按鈕和運算符按鈕,p2採用gl2布局,用來存放其它功能按鈕鍵按鈕。②具體的實現過程是:⑴、程序定義了JTextField類的對象tf1和TextField類的對象tf2及26個button類的按鈕,在Counter類的構造方法中分別對各個對象進行了初始化,對面板進行了合適的布局,各個按鈕也相應的添加到相應的容器中,在實例化所有按鈕、設置其前景色的同時並注冊監聽器。
⑵、對各個組件進行相應的設計之後,即程序運行之後的可視化界面完成之後開始實現程序內部的事件過程,即介面的實現。定義了一個名為 Bt的類來實現介面,程序在actionPerformed( )方法中對各個按鈕和文本框組件的具體方法進行實現,程序中不斷的用else—if語句對按鈕操作事件的實現,並對事件的異常進行處理。
3.程序清單
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import javax.swing.*;
public class Counter extends Frame
{
//聲明三個面板的布局
GridLayout gl1,gl2,gl3;
Panel p0,p1,p2,p3;
JTextField tf1;
TextField tf2;
Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26;
StringBuffer str;//顯示屏所顯示的字元串
double x,y;//x和y都是運算數
int z;//Z表示單擊了那一個運算符.0表示"+",1表示"-",2表示"*",3表示"/"
static double m;//記憶的數字
public Counter()
{
gl1=new GridLayout(1,4,10,0);//實例化三個面板的布局
gl2=new GridLayout(4,1,0,15);
gl3=new GridLayout(4,5,10,15);
tf1=new JTextField(27);//顯示屏
tf1.setHorizontalAlignment(JTextField.RIGHT);
tf1.setEnabled(false);
tf1.setText("0");
tf2=new TextField(10);//顯示記憶的索引值
tf2.setEditable(false);
//實例化所有按鈕、設置其前景色並注冊監聽器
b0=new Button("Backspace");
b0.setForeground(Color.red);
b0.addActionListener(new Bt());
b1=new Button("CE");
b1.setForeground(Color.red);
b1.addActionListener(new Bt());
b2=new Button("C");
b2.setForeground(Color.red);
b2.addActionListener(new Bt());
b3=new Button("MC");
b3.setForeground(Color.red);
b3.addActionListener(new Bt());
b4=new Button("MR");
b4.setForeground(Color.red);
b4.addActionListener(new Bt());
b5=new Button("MS");
b5.setForeground(Color.red);
b5.addActionListener(new Bt());
b6=new Button("M+");
b6.setForeground(Color.red);
b6.addActionListener(new Bt());
b7=new Button("7");
b7.setForeground(Color.blue);
b7.addActionListener(new Bt());
b8=new Button("8");
b8.setForeground(Color.blue);
b8.addActionListener(new Bt());
b9=new Button("9");
b9.setForeground(Color.blue);
b9.addActionListener(new Bt());
b10=new Button("/");
b10.setForeground(Color.red);
b10.addActionListener(new Bt());
b11=new Button("sqrt");
b11.setForeground(Color.blue);
b11.addActionListener(new Bt());
b12=new Button("4");
b12.setForeground(Color.blue);
b12.addActionListener(new Bt());
b13=new Button("5");
b13.setForeground(Color.blue);
b13.addActionListener(new Bt());
b14=new Button("6");
b14.setForeground(Color.blue);
b14.addActionListener(new Bt());
b15=new Button("*");
b15.setForeground(Color.red);
b15.addActionListener(new Bt());
b16=new Button("%");
b16.setForeground(Color.blue);
b16.addActionListener(new Bt());
b17=new Button("1");
b17.setForeground(Color.blue);
b17.addActionListener(new Bt());
b18=new Button("2");
b18.setForeground(Color.blue);
b18.addActionListener(new Bt());
b19=new Button("3");
b19.setForeground(Color.blue);
b19.addActionListener(new Bt());
b20=new Button("-");
b20.setForeground(Color.red);
b20.addActionListener(new Bt());
b21=new Button("1/X");
b21.setForeground(Color.blue);
b21.addActionListener(new Bt());
b22=new Button("0");
b22.setForeground(Color.blue);
b22.addActionListener(new Bt());
b23=new Button("+/-");
b23.setForeground(Color.blue);
b23.addActionListener(new Bt());
b24=new Button(".");
b24.setForeground(Color.blue);
b24.addActionListener(new Bt());
b25=new Button("+");
b25.setForeground(Color.red);
b25.addActionListener(new Bt());
b26=new Button("=");
b26.setForeground(Color.red);
b26.addActionListener(new Bt());
//實例化四個面板
p0=new Panel();
p1=new Panel();
p2=new Panel();
p3=new Panel();
//創建一個空字元串緩沖區
str=new StringBuffer();
//添加面板p0中的組件和設置其在框架中的位置和大小
p0.add(tf1);
p0.setBounds(10,25,300,40);
//添加面板p1中的組件和設置其在框架中的位置和大小
p1.setLayout(gl1);
p1.add(tf2);
p1.add(b0);
p1.add(b1);
p1.add(b2);
p1.setBounds(10,65,300,25);
//添加面板p2中的組件並設置其的框架中的位置和大小
p2.setLayout(gl2);
p2.add(b3);
p2.add(b4);
p2.add(b5);
p2.add(b6);
p2.setBounds(10,110,40,150);
//添加面板p3中的組件並設置其在框架中的位置和大小
p3.setLayout(gl3);//設置p3的布局
p3.add(b7);
p3.add(b8);
p3.add(b9);
p3.add(b10);
p3.add(b11);
p3.add(b12);
p3.add(b13);
p3.add(b14);
p3.add(b15);
p3.add(b16);
p3.add(b17);
p3.add(b18);
p3.add(b19);
p3.add(b20);
p3.add(b21);
p3.add(b22);
p3.add(b23);
p3.add(b24);
p3.add(b25);
p3.add(b26);
p3.setBounds(60,110,250,150);
//設置框架中的布局為空布局並添加4個面板
setLayout(null);
add(p0);
add(p1);
add(p2);
add(p3);
setResizable(false);//禁止調整框架的大小
//匿名類關閉窗口
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e1)
{
System.exit(0);
}
});
setBackground(Color.lightGray);
setBounds(100,100,320,280);
setVisible(true);
}
//構造監聽器
class Bt implements ActionListener
{
public void actionPerformed(ActionEvent e2)
{
try{
if(e2.getSource()==b1)//選擇"CE"清零
{
tf1.setText("0");//把顯示屏清零
str.setLength(0);//清空字元串緩沖區以准備接收新的輸入運算數
}
else if(e2.getSource()==b2)//選擇"C"清零
{
tf1.setText("0");//把顯示屏清零
str.setLength(0);
}
else if(e2.getSource()==b23)//單擊"+/-"選擇輸入的運算數是正數還是負數
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText(""+(-x));
}
else if(e2.getSource()==b25)//單擊加號按鈕獲得x的值和z的值並清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);//清空緩沖區以便接收新的另一個運算數
y=0d;
z=0;
}
else if(e2.getSource()==b20)//單擊減號按鈕獲得x的值和z的值並清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=1;
}
else if(e2.getSource()==b15)//單擊乘號按鈕獲得x的值和z的值並清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=2;
}
else if(e2.getSource()==b10)//單擊除號按鈕獲得x的值和z的值並空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=3;
}
else if(e2.getSource()==b26)//單擊等號按鈕輸出計算結果
{
str.setLength(0);
switch(z)
{
case 0 : tf1.setText(""+(x+y));break;
case 1 : tf1.setText(""+(x-y));break;
case 2 : tf1.setText(""+(x*y));break;
case 3 : tf1.setText(""+(x/y));break;
}
}
else if(e2.getSource()==b24)//單擊"."按鈕輸入小數
{
if(tf1.getText().trim().indexOf('.')!=-1)//判斷字元串中是否已經包含了小數點
{
}
else//如果沒數點有小
{
if(tf1.getText().trim().equals("0"))//如果初時顯示為0
{
str.setLength(0);
tf1.setText((str.append("0"+e2.getActionCommand())).toString());
}
else if(tf1.getText().trim().equals(""))//如果初時顯示為空則不做任何操作
{
}
else
{
tf1.setText(str.append(e2.getActionCommand()).toString());
}
}
y=0d;
}
else if(e2.getSource()==b11)//求平方根
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText("數字格式異常");
if(x<0)
tf1.setText("負數沒有平方根");
else
tf1.setText(""+Math.sqrt(x));
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b16)//單擊了"%"按鈕
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText(""+(0.01*x));
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b21)//單擊了"1/X"按鈕
{
x=Double.parseDouble(tf1.getText().trim());
if(x==0)
{
tf1.setText("除數不能為零");
}
else
{
tf1.setText(""+(1/x));
}
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b3)//MC為清除內存
{
m=0d;
tf2.setText("");
str.setLength(0);
}
else if(e2.getSource()==b4)//MR為重新調用存儲的數據
{
if(tf2.getText().trim()!="")//有記憶數字
{
tf1.setText(""+m);
}
}
else if(e2.getSource()==b5)//MS為存儲顯示的數據
{
m=Double.parseDouble(tf1.getText().trim());
tf2.setText("M");
tf1.setText("0");
str.setLength(0);
}
else if(e2.getSource()==b6)//M+為將顯示的數字與已經存儲的數據相加要查看新的數字單擊MR
{
m=m+Double.parseDouble(tf1.getText().trim());
}
else//選擇的是其他的按鈕
{
if(e2.getSource()==b22)//如果選擇的是"0"這個數字鍵
{
if(tf1.getText().trim().equals("0"))//如果顯示屏顯示的為零不做操作
{
}
else
{
tf1.setText(str.append(e2.getActionCommand()).toString());
y=Double.parseDouble(tf1.getText().trim());
}
}
else if(e2.getSource()==b0)//選擇的是「BackSpace」按鈕
{
if(!tf1.getText().trim().equals("0"))//如果顯示屏顯示的不是零
{
if(str.length()!=1)
{
tf1.setText(str.delete(str.length()-1,str.length()).toString());//可能拋出字元串越界異常
}
else
{
tf1.setText("0");
str.setLength(0);
}
}
y=Double.parseDouble(tf1.getText().trim());
}
else//其他的數字鍵
{
tf1.setText(str.append(e2.getActionCommand()).toString());
y=Double.parseDouble(tf1.getText().trim());
}
}
}
catch(NumberFormatException e){
tf1.setText("數字格式異常");
}
catch( e){
tf1.setText("字元串索引越界");
}
}
}
public static void main(String args[])
{
new Counter();
}
}
4、調試結果
5、實習體會