我們要做股票信息顯示系統(tǒng),要求:在股票服務(wù)器中存儲(chǔ)一些列不同股票的基本信息,包括股票號(hào)碼,股票類型,上市公司,股票價(jià)格。在客戶端實(shí)時(shí)顯示股票信息,并且要求股票價(jià)格要實(shí)時(shí)變化。

      思考:我們首先想:需要建立一個(gè)股票類,添加好它的屬性和方法,然后股票信息若要實(shí)時(shí)顯示在客戶端,就需要在服務(wù)器端存儲(chǔ)股票信息并且當(dāng)客戶端需要時(shí)就要調(diào)取服務(wù)器的股票數(shù)據(jù)(這里需要一個(gè)調(diào)取的方法),在客戶端顯示是一個(gè)不間斷的顯示,因此需要一個(gè)死循環(huán);并且股票其中的價(jià)格是不斷變化的,因此需要用一個(gè)取隨機(jī)數(shù)方法,并且把取到的數(shù)賦值給股票的價(jià)格(偽實(shí)現(xiàn)股票的浮動(dòng)),最后可以在控制臺(tái)不斷顯示出股票信息的變化。

      步驟:
      1.創(chuàng)建一個(gè)股票類,里面封裝好它的各類信息,包括股票的屬性(包括股票號(hào)碼,股票類型,上市公司,股票價(jià)格),股票的方法(get/set方法和構(gòu)造函數(shù)),屬性要私有,方法要公有。
      2.創(chuàng)建一個(gè)股票服務(wù)器類,當(dāng)客戶端需要調(diào)用股票信息時(shí),就可以傳遞給客戶端一組股票信息,因此需要在服務(wù)器添加一個(gè)獲取股票類型數(shù)組的方法,這在里面存儲(chǔ)著股票的基本信息,我們實(shí)例化一個(gè)股票類型的數(shù)組,把其中每一個(gè)股票數(shù)據(jù)都實(shí)例化(可以調(diào)用構(gòu)造函數(shù),也可以調(diào)用get/set方法),當(dāng)調(diào)用時(shí)就可以傳遞該股票數(shù)組實(shí)例化的信息,需要提醒的是股票的價(jià)格是浮動(dòng)的,因此我們需要一個(gè)獲取隨機(jī)數(shù)的方法:Random rm = new Random (),調(diào)用該類的一個(gè)獲取隨機(jī)數(shù)的方法:rm.nextInt(100),表示的是獲取100以內(nèi)的隨機(jī)數(shù)。
      3.創(chuàng)建一個(gè)股票客戶端類,這個(gè)類需要實(shí)時(shí)顯示股票浮動(dòng)信息,因此需要調(diào)用服務(wù)器端的數(shù)據(jù)(通過(guò)一個(gè)獲取方法),并且用到一個(gè)死循環(huán)來(lái)實(shí)現(xiàn)不斷顯示的效果,在這個(gè)死循環(huán)里,為了讓效果更加清晰,我們用到了異常處理方法try{Thread.sleep(int relax);}catch(InterruptedException e){e.printStackTrace();break;},這段程序是每休息relax秒后運(yùn)行一下,在每次運(yùn)行的結(jié)尾,我們需要用for循環(huán)打印出來(lái)股票數(shù)組中每一個(gè)數(shù)據(jù)的基本信息,這樣就實(shí)現(xiàn)了股票價(jià)格不斷浮動(dòng)顯示的效果。


以下附該程序代碼:


//定義一個(gè)股票類,里面可以用兩種方法實(shí)現(xiàn)實(shí)例化信息(構(gòu)造函數(shù)和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;
 }
}


//定義一個(gè)股票服務(wù)器類
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("中國(guó)石油");
   s4.setPrice(r.nextInt(100));
   s4.setFlag('c');
   sk[4]=s4;
  
   Stock s5 =new Stock();
   s5.setId(6);
   s5.setName("中國(guó)石化");
   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;
 }
}


//定義一個(gè)股票客戶端類

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("股票號(hào)碼:"+stock[i].getId()+"  股票類型:"+stock[i].getFlag()
      +"  股票價(jià)格:"+stock[i].getPrice()+"  上市公司:"+stock[i].getName());
    
   }
   System.out.println();
   try{
    Thread.sleep(2*1000);
   }
   catch(InterruptedException e){
    e.printStackTrace();
    break;
   }
  }
 }

}

最后,我們看看運(yùn)行的效果: