-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以擲骰子,我已經得到了輸出,但我不能夠序列化。在程序執行完成並序列化之後,有沒有辦法獲取輸出?
病檢查它out..and回來.. – 2014-10-19 06:59:13
領域的變化,所以我不能用它來存儲變化值.. – 2014-10-19 07:04:01
你指的是類變量會改變?該庫基本上接受成員變量並將它們作爲XML的字段及其值存儲起來。每個班級都會有自己的結構,之後你就可以重建整個對象。請詳細說明你的意思是「領域變化」。 – Memophysic 2014-10-19 07:10:34