我們要做股票信息顯示系統,要求:在股票服務器中存儲一些列不同股票的基本信息,包括股票號碼,股票類型,上市公司,股票價格。在客戶端實時顯示股票信息,并且要求股票價格要實時變化。
思考:我們首先想:需要建立一個股票類,添加好它的屬性和方法,然后股票信息若要實時顯示在客戶端,就需要在服務器端存儲股票信息并且當客戶端需要時就要調取服務器的股票數據(這里需要一個調取的方法),在客戶端顯示是一個不間斷的顯示,因此需要一個死循環;并且股票其中的價格是不斷變化的,因此需要用一個取隨機數方法,并且把取到的數賦值給股票的價格(偽實現股票的浮動),最后可以在控制臺不斷顯示出股票信息的變化。
步驟:
1.創建一個股票類,里面封裝好它的各類信息,包括股票的屬性(包括股票號碼,股票類型,上市公司,股票價格),股票的方法(get/set方法和構造函數),屬性要私有,方法要公有。
2.創建一個股票服務器類,當客戶端需要調用股票信息時,就可以傳遞給客戶端一組股票信息,因此需要在服務器添加一個獲取股票類型數組的方法,這在里面存儲著股票的基本信息,我們實例化一個股票類型的數組,把其中每一個股票數據都實例化(可以調用構造函數,也可以調用get/set方法),當調用時就可以傳遞該股票數組實例化的信息,需要提醒的是股票的價格是浮動的,因此我們需要一個獲取隨機數的方法:Random rm = new Random (),調用該類的一個獲取隨機數的方法:rm.nextInt(100),表示的是獲取100以內的隨機數。
3.創建一個股票客戶端類,這個類需要實時顯示股票浮動信息,因此需要調用服務器端的數據(通過一個獲取方法),并且用到一個死循環來實現不斷顯示的效果,在這個死循環里,為了讓效果更加清晰,我們用到了異常處理方法try{Thread.sleep(int relax);}catch(InterruptedException e){e.printStackTrace();break;},這段程序是每休息relax秒后運行一下,在每次運行的結尾,我們需要用for循環打印出來股票數組中每一個數據的基本信息,這樣就實現了股票價格不斷浮動顯示的效果。
以下附該程序代碼:
//定義一個股票類,里面可以用兩種方法實現實例化信息(構造函數和set方法)
public class Stock {
public int id;
public String name;
public int price;
public char flag;
// public Stock(int id,String name,int price,char flag){
// this.id =id;
// this.name=name;
// this.price=price;
// this.flag=flag;
// }
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public char getFlag() {
return flag;
}
public void setFlag(char flag) {
this.flag = flag;
}
}
//定義一個股票服務器類
public class StockServer {
public static Stock[] getStock(){
Random r =new Random();
Stock [] sk =new Stock [7];
// sk[0]=new Stock(1,"IBM",10,'a');
// sk[1]=new Stock(2,"Orical",18,'a');
// sk[2]=new Stock(3,"Sun",14,'b');
// sk[3]=new Stock(4,"Microsoft",21,'b');
// sk[4]=new Stock(5,"Ubuntu",24,'c');
Stock s =new Stock();
s.setId(1);
s.setName("IBM");
s.setPrice(r.nextInt(100));
s.setFlag('a');
sk[0]=s;
Stock s1 =new Stock();
s1.setId(2);
s1.setName("Orical");
s1.setPrice(r.nextInt(100));
s1.setFlag('b');
sk[1]=s1;
Stock s2 =new Stock();
s2.setId(3);
s2.setName("Sun");
s2.setPrice(r.nextInt(100));
s2.setFlag('b');
sk[2]=s2;
Stock s3 =new Stock();
s3.setId(4);
s3.setName("Microsoft");
s3.setPrice(r.nextInt(100));
s3.setFlag('a');
sk[3]=s3;
Stock s4 =new Stock();
s4.setId(5);
s4.setName("中國石油");
s4.setPrice(r.nextInt(100));
s4.setFlag('c');
sk[4]=s4;
Stock s5 =new Stock();
s5.setId(6);
s5.setName("中國石化");
s5.setPrice(r.nextInt(100));
s5.setFlag('c');
sk[5]=s5;
Stock s6 =new Stock();
s6.setId(7);
s6.setName("同花順");
s6.setPrice(r.nextInt(100));
s6.setFlag('d');
sk[6]=s6;
return sk;
}
}
//定義一個股票客戶端類
public class StockClient {
public static void main(String [] args){
while (true){
Stock stock [] = StockServer.getStock();
for(int i=0;i<stock.length;i++){
System.out.println("股票號碼:"+stock[i].getId()+" 股票類型:"+stock[i].getFlag()
+" 股票價格:"+stock[i].getPrice()+" 上市公司:"+stock[i].getName());
}
System.out.println();
try{
Thread.sleep(2*1000);
}
catch(InterruptedException e){
e.printStackTrace();
break;
}
}
}
}
最后,我們看看運行的效果:
