2014-10-19 109 views
-1

我可以知道如何序列化和反序列化該程序,即時通訊無法弄清楚,我應該使用數組來存儲正在打印的內容..?如何序列化該程序並將其反序列化

它在兩個獨立的calss文件中有兩個類。 一個是球員,另一個是SnakeAndladder1

Player class 
------------ 

package coll.org; 

public class Player { 

private String name; 
private int score; 

Player(String name) { 
    this.name = name; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public int getScore() { 
    return score; 
} 
public void setScore(int score) { 
    this.score = score; 
} 

} 


SnakeAndladder1 class 
--------------------- 


package coll.org; 

import java.util.ArrayList; 
import java.util.Hashtable; 
import java.util.Map; 
import java.util.Scanner; 

public class SnakeAndladder1 { 
ArrayList<String> name1=new ArrayList<String>(); //an array to store players names 

public int throwdice() //to calculate the dice value 
{ 
    return (int)(Math.random()*6)+1; 
} 

public int ladder(int curscore) 
{ 
    Hashtable<Integer,Integer> ld = new Hashtable<Integer,Integer>(); 

    //Map<Integer,Integer> ldmap = new Map<Integer,Integer>(); 
    ld.put(15,30); 
    ld.put(45,71); 
    ld.put(25,62); 
    ld.put(81,91); 
    ld.put(9,39); 
    while(curscore!=15 || curscore!=45 || curscore!=25 || curscore!=81 || curscore!=9) 
    { return curscore;} 
    int v=ld.get(15); 
    return v; 

} 
public int snake(int curscore) 
{ 
    Hashtable<Integer,Integer> ld = new Hashtable<Integer,Integer>(); 
    ld.put(29,11); 
    ld.put(81,48); 
    ld.put(30,6); 
    ld.put(92,71); 
    ld.put(58,19); 
    while(curscore!=29 || curscore!=81 || curscore!=30 || curscore!=92 || curscore!=58) 
    {return curscore;} 
    int v=ld.get(curscore); 
    return v; 
} 


public boolean Game (Player p){ 
    //int score=0; 
    //String name; 
    int v=0; 
    //name=name1.toString(); 
     System.out.println("Click y to roll dice"); 
     Scanner in2=new Scanner(System.in); 
     String yes=in2.nextLine(); 
     if(yes.equalsIgnoreCase("y")) 
     { 
      v=throwdice(); 
      System.out.println("dice value:"+v); 
     } 
     p.setScore(p.getScore()+v); 
     if(p.getScore()==100) 
     { 
      System.out.println("User:"+p.getName()+"got"+v+".Winner!!!"); 
      return false; 
     } 
     if (p.getScore()>100) 
     { 
      p.setScore(p.getScore()-v); 
      System.out.println("Current score of"+p.getName()+"is"+p.getScore()); 
      return true; 
     } 

     int s1=ladder(p.getScore()); 
     if(s1==p.getScore()) 
     { 
      p.setScore(snake(p.getScore())); 
      System.out.println("Current score of"+p.getName()+"is"+p.getScore()); 
      return true; 
     } 
     else 
     { 
      p.setScore(s1); 
      System.out.println("Current score of"+p.getName()+"is"+p.getScore()); 
      return true; 
     } 


} 

public static void main(String[] args) { 
// TODO Auto-generated method stub 
int l=0; 
//boolean flag=true; 
System.out.println("Enter the number of players:"); 
Scanner in=new Scanner(System.in); 
int n=in.nextInt(); 
System.out.println("Enter Players names in order:"); 
ArrayList<Player> p1=new ArrayList<Player>(); //an array to store players names 
for (int i=0;i<n;i++) 
{ 
    Scanner in1=new Scanner(System.in); 
    String name2=in1.nextLine(); 
    Player p = new Player(name2); 
    p1.add(p); 
    //name1.add(name2); 
} 
//Snakeandladder1[] players = new Snakeandladder1[n]; 
//ArrayList<Snakeandladder1> player=new ArrayList<Snakeandladder1>(); 
//for(int i=0;i<n;i++) 
    //player.add(new Snakeandladder1()); 
// SnakeAndladder1 players[]; 
// players = new SnakeAndladder1[n]; 
SnakeAndladder1 sk = new SnakeAndladder1(); 
while(true) 
{ 
    for (int i=0;i<n;i++) 
    { 
     Player p3=p1.get(i); 
     boolean flag = sk.Game(p3); 
     if (flag == false) 
     {System.exit(0);} 
    } 
    } 
} 
} 

這個程序是允許任何數量的球員,並要求用戶輸入y以擲骰子,我已經得到了輸出,但我不能夠序列化。在程序執行完成並序列化之後,有沒有辦法獲取輸出?

回答

0

存在一個整潔的庫,用於將對象序列化爲XML文件(當然還有反序列化它們)。它使用非常簡單,非常有效。

http://x-stream.github.io/tutorial.html

+0

病檢查它out..and回來.. – 2014-10-19 06:59:13

+0

領域的變化,所以我不能用它來存儲變化值.. – 2014-10-19 07:04:01

+0

你指的是類變量會改變?該庫基本上接受成員變量並將它們作爲XML的字段及其值存儲起來。每個班級都會有自己的結構,之後你就可以重建整個對象。請詳細說明你的意思是「領域變化」。 – Memophysic 2014-10-19 07:10:34