import i.love.you.*;
從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。成都創(chuàng)新互聯(lián)公司將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。
public Class Love{
public static void main(String args[]){
You you = new You();
Me me = new Me();
if(Me.sayLoveTo(you)==true You.sayYesTo(me)==true){
Me.loveForever(you);
}
}
}
1、 實(shí)訓(xùn)的題目及簡介:
題目:java計(jì)算器應(yīng)用程序
簡介:通過本程序可以實(shí)現(xiàn)計(jì)算器的基本功能。程序是Frame類的子類。使用GridLayout的布局方式對(duì)組件進(jìn)行布局,用Panel類的容器存放按扭、文本框組件,程序中也用到大量的else-----if語句。
2、 設(shè)計(jì)說明:
一實(shí)驗(yàn)?zāi)康?/p>
通過實(shí)訓(xùn)能夠結(jié)合實(shí)例進(jìn)一步理解面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念,掌握程序設(shè)計(jì)的基本方法和技巧,靈活的使用包,進(jìn)一步的理解接口,熟練的掌握在接口中對(duì)事件的實(shí)現(xiàn)。深入理解和靈活運(yùn)用面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特性,培養(yǎng)良好的程序設(shè)計(jì)風(fēng)格,提高抽象思維、邏輯思維的能力。
二實(shí)驗(yàn)內(nèi)容
編寫一個(gè)實(shí)現(xiàn)計(jì)算器應(yīng)用程序
三 程序介紹及其功能的實(shí)現(xiàn)
程序需要導(dǎo)入import java.awt.*、 import java.awt.event.*、 import java.lang.*、 import javax.swing.*包。①程序的基本框架是:首先定義一個(gè)Frame類的子類,之后聲明三個(gè)面板的布局,即定義了GridLayout類的三個(gè)對(duì)象gl1、gl2、gl3。之后是定義了Panel類的容器的四個(gè)對(duì)象p0、p1、p2、p3,其中p0用來存放顯示屏文本框組件,p1采用gl1布局,用來存放刪除和歸零按鈕,p3采用gl3布局,用來存放數(shù)字按鈕和運(yùn)算符按鈕,p2采用gl2布局,用來存放其它功能按鈕鍵按鈕。②具體的實(shí)現(xiàn)過程是:⑴、程序定義了JTextField類的對(duì)象tf1和TextField類的對(duì)象tf2及26個(gè)button類的按鈕,在Counter類的構(gòu)造方法中分別對(duì)各個(gè)對(duì)象進(jìn)行了初始化,對(duì)面板進(jìn)行了合適的布局,各個(gè)按鈕也相應(yīng)的添加到相應(yīng)的容器中,在實(shí)例化所有按鈕、設(shè)置其前景色的同時(shí)并注冊監(jiān)聽器。
⑵、對(duì)各個(gè)組件進(jìn)行相應(yīng)的設(shè)計(jì)之后,即程序運(yùn)行之后的可視化界面完成之后開始實(shí)現(xiàn)程序內(nèi)部的事件過程,即接口的實(shí)現(xiàn)。定義了一個(gè)名為 Bt的類來實(shí)現(xiàn)接口,程序在actionPerformed( )方法中對(duì)各個(gè)按鈕和文本框組件的具體方法進(jìn)行實(shí)現(xiàn),程序中不斷的用else—if語句對(duì)按鈕操作事件的實(shí)現(xiàn),并對(duì)事件的異常進(jìn)行處理。
3.程序清單
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import javax.swing.*;
public class Counter extends Frame
{
//聲明三個(gè)面板的布局
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都是運(yùn)算數(shù)
int z;//Z表示單擊了那一個(gè)運(yùn)算符.0表示"+",1表示"-",2表示"*",3表示"/"
static double m;//記憶的數(shù)字
public Counter()
{
gl1=new GridLayout(1,4,10,0);//實(shí)例化三個(gè)面板的布局
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);
//實(shí)例化所有按鈕、設(shè)置其前景色并注冊監(jiān)聽器
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());
//實(shí)例化四個(gè)面板
p0=new Panel();
p1=new Panel();
p2=new Panel();
p3=new Panel();
//創(chuàng)建一個(gè)空字符串緩沖區(qū)
str=new StringBuffer();
//添加面板p0中的組件和設(shè)置其在框架中的位置和大小
p0.add(tf1);
p0.setBounds(10,25,300,40);
//添加面板p1中的組件和設(shè)置其在框架中的位置和大小
p1.setLayout(gl1);
p1.add(tf2);
p1.add(b0);
p1.add(b1);
p1.add(b2);
p1.setBounds(10,65,300,25);
//添加面板p2中的組件并設(shè)置其的框架中的位置和大小
p2.setLayout(gl2);
p2.add(b3);
p2.add(b4);
p2.add(b5);
p2.add(b6);
p2.setBounds(10,110,40,150);
//添加面板p3中的組件并設(shè)置其在框架中的位置和大小
p3.setLayout(gl3);//設(shè)置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);
//設(shè)置框架中的布局為空布局并添加4個(gè)面板
setLayout(null);
add(p0);
add(p1);
add(p2);
add(p3);
setResizable(false);//禁止調(diào)整框架的大小
//匿名類關(guān)閉窗口
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e1)
{
System.exit(0);
}
});
setBackground(Color.lightGray);
setBounds(100,100,320,280);
setVisible(true);
}
//構(gòu)造監(jiān)聽器
class Bt implements ActionListener
{
public void actionPerformed(ActionEvent e2)
{
try{
if(e2.getSource()==b1)//選擇"CE"清零
{
tf1.setText("0");//把顯示屏清零
str.setLength(0);//清空字符串緩沖區(qū)以準(zhǔn)備接收新的輸入運(yùn)算數(shù)
}
else if(e2.getSource()==b2)//選擇"C"清零
{
tf1.setText("0");//把顯示屏清零
str.setLength(0);
}
else if(e2.getSource()==b23)//單擊"+/-"選擇輸入的運(yùn)算數(shù)是正數(shù)還是負(fù)數(shù)
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText(""+(-x));
}
else if(e2.getSource()==b25)//單擊加號(hào)按鈕獲得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);//清空緩沖區(qū)以便接收新的另一個(gè)運(yùn)算數(shù)
y=0d;
z=0;
}
else if(e2.getSource()==b20)//單擊減號(hào)按鈕獲得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=1;
}
else if(e2.getSource()==b15)//單擊乘號(hào)按鈕獲得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=2;
}
else if(e2.getSource()==b10)//單擊除號(hào)按鈕獲得x的值和z的值并空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=3;
}
else if(e2.getSource()==b26)//單擊等號(hào)按鈕輸出計(jì)算結(jié)果
{
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)//單擊"."按鈕輸入小數(shù)
{
if(tf1.getText().trim().indexOf('.')!=-1)//判斷字符串中是否已經(jīng)包含了小數(shù)點(diǎn)
{
}
else//如果沒數(shù)點(diǎn)有小
{
if(tf1.getText().trim().equals("0"))//如果初時(shí)顯示為0
{
str.setLength(0);
tf1.setText((str.append("0"+e2.getActionCommand())).toString());
}
else if(tf1.getText().trim().equals(""))//如果初時(shí)顯示為空則不做任何操作
{
}
else
{
tf1.setText(str.append(e2.getActionCommand()).toString());
}
}
y=0d;
}
else if(e2.getSource()==b11)//求平方根
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText("數(shù)字格式異常");
if(x0)
tf1.setText("負(fù)數(shù)沒有平方根");
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("除數(shù)不能為零");
}
else
{
tf1.setText(""+(1/x));
}
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b3)//MC為清除內(nèi)存
{
m=0d;
tf2.setText("");
str.setLength(0);
}
else if(e2.getSource()==b4)//MR為重新調(diào)用存儲(chǔ)的數(shù)據(jù)
{
if(tf2.getText().trim()!="")//有記憶數(shù)字
{
tf1.setText(""+m);
}
}
else if(e2.getSource()==b5)//MS為存儲(chǔ)顯示的數(shù)據(jù)
{
m=Double.parseDouble(tf1.getText().trim());
tf2.setText("M");
tf1.setText("0");
str.setLength(0);
}
else if(e2.getSource()==b6)//M+為將顯示的數(shù)字與已經(jīng)存儲(chǔ)的數(shù)據(jù)相加要查看新的數(shù)字單擊MR
{
m=m+Double.parseDouble(tf1.getText().trim());
}
else//選擇的是其他的按鈕
{
if(e2.getSource()==b22)//如果選擇的是"0"這個(gè)數(shù)字鍵
{
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//其他的數(shù)字鍵
{
tf1.setText(str.append(e2.getActionCommand()).toString());
y=Double.parseDouble(tf1.getText().trim());
}
}
}
catch(NumberFormatException e){
tf1.setText("數(shù)字格式異常");
}
catch(StringIndexOutOfBoundsException e){
tf1.setText("字符串索引越界");
}
}
}
public static void main(String args[])
{
new Counter();
}
}
4、調(diào)試結(jié)果
5、實(shí)習(xí)體會(huì)
源代碼:
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);
}
}運(yùn)行結(jié)果:
2.編寫Java小應(yīng)用程序,輸出兩行字符串:“Java很有趣。”和“努力學(xué)習(xí)Java編程?!?,輸出的起點(diǎn)坐標(biāo)是(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("努力學(xué)習(xí)Java編程。",20,70);
}
}運(yùn)行情況:
3.使用算術(shù)運(yùn)算符得到一個(gè)4位十進(jìn)制數(shù)的各位數(shù)字并輸出,然后輸出該數(shù)的逆序數(shù)和各位數(shù)字平方后相加的和。
源程序代碼:
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的逆序數(shù)為:"+d+" "+c+" "+b+" "+a);
System.out.print("各位數(shù)字平方后相加的和為:");
System.out.print(a*a+b*b+c*c+d*d);
}
}
運(yùn)行結(jié)果:
三、實(shí)驗(yàn)總結(jié)(是否完成實(shí)驗(yàn)、實(shí)驗(yàn)過程中的問題以及解決方法分析等)
本次是我第一次使用JAVA來進(jìn)行編程,感覺很是不一樣,在前兩節(jié)課中我們學(xué)習(xí)了有關(guān)Java的一些簡單知識(shí)。然后這次的實(shí)驗(yàn)是對(duì)最初的一種練習(xí)。
在第一題中,我們重要是認(rèn)識(shí)java的運(yùn)行環(huán)境,并且了解各種變量的數(shù)據(jù)類型。只要通過簡單的語句就可以通過運(yùn)行。其中出現(xiàn)了一些單詞的拼寫錯(cuò)誤,這些是可以修改正確的。第二題我們練習(xí)的十一個(gè)小的applet應(yīng)用程序,需要設(shè)置一個(gè)網(wǎng)頁來顯示,這是一個(gè)很不一樣的地方,最后成功測試,里面需要注意的是顯示位置的問題。第三題我們做的是一個(gè)有算法要求的解決問題,在測試中出現(xiàn)了一點(diǎn)小問題,程序的算法出了錯(cuò)。還有一個(gè)問題是有關(guān)于顯示問題,最后的數(shù)據(jù)輸出需要用到兩行分別顯示字符和數(shù)據(jù),這樣才不會(huì)出錯(cuò)。
寫出具體的代碼即可,代碼記得做簡單的注釋,這個(gè)注釋就是你的思想(“思想”怎么理解都可以,做一下簡單的注釋,注意注釋不要太復(fù)雜太多)。怎么想的就怎么寫,程序這種東西核心的核心是思想,思想表達(dá)出來并且程序能正常實(shí)現(xiàn)和運(yùn)行就可以。再多寫其他的東西反而讓人覺得亂。