Могу ли я знать, как сериализовать и десериализовать эту программу, им не удалось ее выяснить, следует ли использовать массивы для хранения распечатываемого контента ..?Как сериализовать эту программу и десериализовать ее
Он имеет два класса в двух отдельных файлах 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);}
}
}
}
}
Эта программа позволяет любому количеству игроков и попросить пользователя ввести у катить кости, я есть выход, но я не могу сериализовать его. Есть ли способ сделать вывод после завершения выполнения программы и сериализовать ее?
плохо проверить его out..and вернуться .. –
поля изменится, так что я не могу использовать его для хранения меняющихся значений .. –
Вы имеете в виду, что переменные класса может измениться? Библиотека в основном принимает переменные-члены и сохраняет их как поля для XML с их значением. Каждый класс будет иметь свою структуру, и после этого вы сможете восстановить весь объект. Пожалуйста, уточните, что вы подразумеваете под «сменой полей». – Memophysic