Java中使用random(),为何每次随机数都一样?(含代码)

码上行动_Light 2014-07-16 08:12:01
各位同仁,小弟写了一段代码,模拟人与电脑猜拳-->人由控制台输入,电脑由随机数处理生成,但是发现每个回合电脑都在出一个拳。能否帮忙看下在随机数处理那块哪里出了问题?(这段代码还有其他小问题,不影响编译,属业务逻辑问题)不胜感激!

/**
* 功能:实现一个猜拳游戏,在控制台提供输入,电脑自动随机出拳;
* 要能够统计总共进行的次数和电脑赢得次数
* Created by Light on 2014-7-14
* Modified by Light on 2014-7-16
*/

package com.first;
import java.util.*;
public class FigureGuessing {
public static void main(String []args)
{
//创建游戏
FigureGuess fr = new FigureGuess();
//创建参与者
ComputerParty cp = new ComputerParty();
PersonParty pp = new PersonParty();
//开始游戏
fr.startGame(cp, pp);

}

}

/*****************************************************************************************/

//定义抽象游戏父类
abstract class Game
{
abstract public void startGame(ComputerParty cp,PersonParty pp);//开始游戏,调用actInGame()来操作;
abstract public void actInGame(ComputerParty cp,PersonParty pp);//游戏输赢判定,包含各种游戏规则实现
abstract public void stopGame(ComputerParty cp,PersonParty pp); //结束游戏,打印结束标签;
}
//定义抽象参与者类
abstract class Participate
{
public static int maxCount = 0;//最多参与回合数
public static int realCount = 0;//实际参与回合数
public static int winCount = 0;//赢的回合数
abstract public void setRounds(int rounds);//定义参与回合数(可选)
abstract public String playGame();//参与游戏,定义如何参与游戏
abstract void outOfGame();//停止参与游戏,定义停止后的操作,包括是否打印出参赛结果
}



/*****************************************************************************************/

//定义猜拳游戏类继承余Game
class FigureGuess extends Game
{
//开始游戏,调用actInGame()来操作;
public void startGame(ComputerParty cp,PersonParty pp)
{
actInGame(cp,pp);
}
//游戏输赢判定,包含各种游戏规则实现
public void actInGame(ComputerParty cp,PersonParty pp)
{
//调用参与者参与游戏
//首次接受游戏参与者输入---i-->ComputerParty; j-->PersonParty
int i = Integer.parseInt(cp.playGame());
int j = Integer.parseInt(pp.playGame());
//只要玩家输入非4、5,则游戏判定继续
while(j!=4 && j!=5)
{
//游戏输赢判定
//游戏规则判断,谁赢谁输,并输出结果


//重置两个参与者的输入,如果玩家输入4或者5,则在下一轮判定之前退出游戏
//人先出拳
j = Integer.parseInt(pp.playGame());
i = Integer.parseInt(cp.playGame());

}

//退出循环时,无论是主动还是被动,表示游戏已经结束了
stopGame(cp,pp);
}
//结束游戏,打印结束标签;
public void stopGame(ComputerParty cp,PersonParty pp)
{
pp.outOfGame();
cp.outOfGame();
ComputerParty.showWinCount();
}
}

/*****************************************************************************************/


//定义子类电脑继承于Participate
class ComputerParty extends Participate
{
//电脑随机产生一个数字,代表拳头(0)、布(1)、剪刀(2)
Random rd = new Random();
int figur = Math.abs(rd.nextInt(ComputerParty.realCount+1))%3 ;

//初始化回合数(可选),如果设置了回合数,在达到此数值时自动推出游戏;如果未设置,则根据输入判定是否继续游戏
public void setRounds(int rounds)
{
ComputerParty.maxCount = rounds;
}
//定义如何进行参与游戏,包含对何时退出游戏的定义,保证参与者的主动性;但是由于电脑是被动一方,不主动退出游戏
public String playGame()
{
//System.out.print(Participate.count);
ComputerParty.realCount++;
return String.valueOf(figur);

}
//showFigur
public void showFigur()
{
switch(figur){
case 0: System.out.println("电脑出拳头!"); break;
case 1: System.out.println("电脑出布!"); break;
case 2: System.out.println("电脑出剪刀!"); break;
default:System.out.println("出的啥啊,没看见!");break;
}

}
//退出游戏操作
public void outOfGame()
{
System.out.println("对手退出了游戏,电脑自动退出游戏!");
}

//定义showWinCount方法
public static void showWinCount()
{
System.out.println("电脑总共赢了"+ComputerParty.winCount+"回合");
}

}

/*****************************************************************************************/

//定义人参与者类继承于Participate类
class PersonParty extends Participate
{
int figur = 0;
//初始化回合数(可选),如果设置了回合数,在达到此数值时自动推出游戏;如果未设置,则根据输入判定是否继续游戏
public void setRounds(int rounds)
{
PersonParty.realCount=rounds;
}

//定义如何进行参与游戏,包含对何时退出游戏的定义,保证参与者的主动性;
public String playGame()
{

//提示输入数字来代表出拳
System.out.println("请出拳(0-拳头;1-布;2-剪刀;4-退出):");
//接受输入
Scanner sr = new Scanner(System.in);
figur = sr.nextInt();
//参与一次就要将realCount++


//如果设置了最大回合数的话,判断此次是否大于最大参与回合数
if(PersonParty.maxCount!=0 && PersonParty.realCount>PersonParty.maxCount)
{
return "5";
}else{
return String.valueOf(figur);
}
}

//showFigur
public void showFigur()
{
switch(figur){
case 0: System.out.println("玩家出拳头!"); break;
case 1: System.out.println("玩家出布!"); break;
case 2: System.out.println("玩家出剪刀!"); break;
case 4: break;
case 5: break;
default:System.out.println("出的啥啊,没看见!");break;
}
}
//退出游戏操作
public void outOfGame()
{
//判断退出游戏原因
if(figur==4)
{
System.out.println("不想玩了!");
System.out.println("总共玩了"+PersonParty.realCount+"回合!");
}else{
System.out.println("达到最大游戏回合限制了!");
System.out.println("总共玩了"+(PersonParty.realCount-1)+"回合!");
}

}
}












...全文
1583 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
码上行动_Light 2014-07-21
  • 打赏
  • 举报
回复
引用 10 楼 longtian1213 的回复:
[quote=引用 9 楼 sparrow00004 的回复:] [quote=引用 3 楼 longtian1213 的回复:] Random rd = new Random(); int figur = Math.abs(rd.nextInt(ComputerParty.realCount+1))%3 ; 这两句我没看错的话,应该是电脑类ComputerParty 的成员方法把,在new的时候初始化了一次,貌似以后就没再变把,你放到showFigur方法中看看!
仁兄,我原本是认为每次进入playGame方法后,执行到int figur = xxxx 的视乎,rd.nextInt(xx)能重新取一次随机数,能否帮忙解释下为什么不会重新取么?多谢![/quote] 它们是成员变量呀,成员变量会在类实例话的时候,进行初始化,以后再使用这实例的时候,就不会初始化了,如果想改变他的值,需要提供相应的方法![/quote] 多谢多谢!
S117 2014-07-19
  • 打赏
  • 举报
回复
引用 9 楼 sparrow00004 的回复:
[quote=引用 3 楼 longtian1213 的回复:] Random rd = new Random(); int figur = Math.abs(rd.nextInt(ComputerParty.realCount+1))%3 ; 这两句我没看错的话,应该是电脑类ComputerParty 的成员方法把,在new的时候初始化了一次,貌似以后就没再变把,你放到showFigur方法中看看!
仁兄,我原本是认为每次进入playGame方法后,执行到int figur = xxxx 的视乎,rd.nextInt(xx)能重新取一次随机数,能否帮忙解释下为什么不会重新取么?多谢![/quote] 它们是成员变量呀,成员变量会在类实例话的时候,进行初始化,以后再使用这实例的时候,就不会初始化了,如果想改变他的值,需要提供相应的方法!
码上行动_Light 2014-07-18
  • 打赏
  • 举报
回复
引用 3 楼 longtian1213 的回复:
Random rd = new Random(); int figur = Math.abs(rd.nextInt(ComputerParty.realCount+1))%3 ; 这两句我没看错的话,应该是电脑类ComputerParty 的成员方法把,在new的时候初始化了一次,貌似以后就没再变把,你放到showFigur方法中看看!
仁兄,我原本是认为每次进入playGame方法后,执行到int figur = xxxx 的视乎,rd.nextInt(xx)能重新取一次随机数,能否帮忙解释下为什么不会重新取么?多谢!
码上行动_Light 2014-07-18
  • 打赏
  • 举报
回复
引用 6 楼 u013891238 的回复:

package perfect;

import java.util.Random;

public class Computer
{
//  private String name;
//	private int score;
	int a,m;
	String name2;
	public void showFist()// 电脑出拳方法
	{
		Random r1 = new Random();
		a = r1.nextInt(3);// 随机生成一个1~3的数字,对应石头剪刀布。
		Random r2 = new Random();//生成电脑姓名的随机数。
		m = r2.nextInt(3);
		if (m == 0)
		{
			name2 = "曹操";
//			System.out.print("曹操");
//			c.showFist();
		}
		else if (m == 1)
		{
			name2 = "孙权";
//			System.out.print("孙权");
//			c.showFist();
		}
		else if (m == 2)
		{
			name2 = "刘备";
			System.out.print("刘备");
//			c.showFist();
		}
		if (a == 0)//生成随机数,对应前面的人名
		{
			System.out.println(name2 + "出的是  石头!");
		}
		else if (a == 1)
		{
			System.out.println(name2 + "出的是  剪刀!");
		}
		else if (a == 2)
		{
			System.out.println(name2 + "出的是  布!");
		}

//		Computer c = new Computer();//对computer进行实例化,用于调取showFist方法。
		
		
//		score ++;
	}
}

package perfect;

import java.util.Scanner;

public class Game
{
	// private Person person; // 甲方
	// private Computer computer; // 乙方
	// private int count;// 对战次数
	String str2, str3;
	static String name,cycle;// 关于姓名输入的字符串
	public int lost, win, deuce; //

	/**
	 * 初始化
	 */
	public void initial()
	{
		// 初始化工作

		for (int i = 0; i <= 16; i++)
		{
			System.out.print("*");
		}
		System.out.println();
		System.out.println("**" + "   开始    " + "      游戏     " + "  **   ");
		for (int i = 0; i <= 16; i++)
		{
			System.out.print("*");
		}
		System.out.println();
		System.out.println("出拳规则:0、石头 ,1、剪刀 ,2、布");
		System.out.print("请输入你的姓名:");
		Scanner s = new Scanner(System.in);
		boolean b = true;
		while (b)// 对所输入的姓名的字符串进行非空循环
		{
			name = s.nextLine();//定义name的值
			setName(name);//设置姓名
//			System.out.println("name = " + name);//程序初期用于测试是否讲name的值传入Person的showFist()方法
			if (!name.equals(""))// 判断所输入的字符串是后为空
			{
				b = false;
//				System.out.println("name = " + name);//初期用于测试是否传入name的值
			}
			else
			// 若为空则重新输入
			{
				System.out.print("你没有输入姓名,无法开始游戏,是否继续(y/n):");
				Scanner s2 = new Scanner(System.in);
				String str = s2.next();
				if ("y".equals(str))
				{
					b = true;
					System.out.print("请输入你的姓名:");
				}
				else
				{
					b = false;
					System.exit(0);
				}

			}

		}

	}

	public String getName()
	{
		return this.name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	/**
	 * 开始游戏
	 */
	public void startGame()// 开始游戏,控制游戏逻辑
	{
		Person p = new Person();
		Computer c = new Computer();
		Scanner s = new Scanner(System.in);
		Game game = new Game();
		boolean b = true;
		while (b)//对有事是否重新开始游戏进行一个循环对“n”则结束,“y”执行下一轮。
		{
			System.out.println("是否继续游戏(y/n)?");
			String cycle = s.nextLine();
			if (cycle.equals("n"))
			{
				b = false;
				break;
			}
			else if (cycle.equals("y"))
			{
				p.showFist();
				c.showFist();

				// System.out.println(p.n);//程序初期用于检查n的值时候传进来。
				// System.out.println(c.a);//程序初期用于检查a的值时候传进来。
				if (p.n == c.a)// 首先经过计算,确定了所有返回的可能值,通过if语句判断输出的值
				{
					System.out.println("deuce");
					deuce++;
				}
				else if (p.n - c.a == 1 || p.n - c.a == -2)
				{
					System.out.println("lost");
					lost++;
					// System.out.println(p.n);//程序初期用于检查n的值时候传进来。
					// System.out.println(c.a);//程序初期用于检查a的值时候传进来。
				}
				else
				{
					System.out.println("win");
					win++;
				}

				for (int i = 0; i <= 16; i++)
				{
					System.out.print("-");
				}
				System.out.println();
				System.out.println("deuce:\t" + deuce);
				System.out.println("win:\t" + win);
				System.out.println("lost:\t" + lost);
				b = true;

			}
			else{

				System.out.println("输入有误,是否重新输入(y/n)");
				Scanner s7 = new Scanner(System.in);
				String str7 = s7.next();
			}
		}
	}

	/**
	 * 显示比赛结果
	 */
	public void showResult()
	{
		/* 显示最后结果 */
		// 打印玩了多少局,电脑获胜还是人获胜
		Game game = new Game();
		game.startGame();
		for (int i = 0; i <= 16; i++)
		{
			System.out.print("-");
		}
		System.out.println();
		if (game.win > game.lost)
		{
			System.out.println("You are winner");
		}
		else if (game.win < game.lost)
		{
			System.out.println("You are loser");
		}
		else
		{
			System.out.println("You are deuce");
		}
	}

	/**
	 * 计算比赛结果
	 */
	// public int calcResult()
	// {
	// return 0;
	// }
}

package perfect;


import java.util.InputMismatchException;
import java.util.Scanner;

public class Person
{
	// private String name = "匿名";
	// private int score;
	int n;

	public void showFist() // 人出拳
	{
		System.out.print("你将出:");
		Scanner s = new Scanner(System.in);
		Game game = new Game();
		// 对用户输入的数字进行判断
		boolean b = true;
		while (b)
		{
			boolean b1 = false;
			do{
				try//捕获程序输入字符串异常。
				{
					n = s.nextInt();
					b1 = true;
				}
				catch (InputMismatchException n)//取出异常
				{
					s.next();
					System.out.println("输入有误,是否重新输入(y/n)");
					Scanner s5 = new Scanner(System.in);
					String str5 = s5.next();
					if ("y".equals(str5))//对异常进行判断,满足条件则继续执行
					{
						b = true;
						System.out.print("你将出:");
					}
					else if("n".equals(str5))
					{
						b = false;
						System.exit(0);
					}
					else//不满足条件则停止程序运行
					{
						System.out.println("输入有误,是否重新输入(y/n)");
//						Scanner s6 = new Scanner(System.in);
						String str6 = s5.next();
					}
				}
			}while(!b1);//直到不满足条件(!false = true)退出循环
			if (n < 3)//随机出石头剪刀布
			{
				switch (n)
				{
				case 0:
					System.out.print(game.name + "出的是  石头!");
					break;
				case 1:
					System.out.print(game.name + "出的是  剪刀!");
					break;
				case 2:
					System.out.print(game.name + "出的是  布!");
					break;
				}
				b = false;
				// 用户输入错误,让其选择是否重新输入
			}
			
			else//输入错误后重新输入 
			{
				System.out.print("您的输入错误,是否继续(y/n):");
				Scanner s2 = new Scanner(System.in);
				String str = s2.next();
				if ("y".equals(str))
				{
					b = true;
					System.out.print("你将出:");
				}
				else
				{
					b = false;
					System.exit(0);
				}
			}
		}
	}
}

package perfect;

public class StartGuess {

	/**
	 * 人机互动版猜拳游戏
	 * @param args
	 */
	public static void main(String[] args) {
		//游戏入口
		Game game = new Game();
		game.initial();
		game.showResult();
		game.startGame();
	}
}

这个是我在学校写的猜拳游戏的代码,希望对楼主有帮助
多谢这位仁兄分享。
码上行动_Light 2014-07-18
  • 打赏
  • 举报
回复
引用 5 楼 vnvlyp 的回复:
[quote=引用 3 楼 longtian1213 的回复:] Random rd = new Random(); int figur = Math.abs(rd.nextInt(ComputerParty.realCount+1))%3 ; 这两句我没看错的话,应该是电脑类ComputerParty 的成员方法把,在new的时候初始化了一次,貌似以后就没再变把,你放到showFigur方法中看看!
就是这里,figur应该每一回合都重新计算一次,不然你初始化了以后这个值就永远不变了。[/quote] 多谢二位,把那两句话放方法里就OK了。我对产生Java的运行机制还是一知半解,不清楚什么情况下代码会什么方式运行。
时熊猫Time 2014-07-17
  • 打赏
  • 举报
回复

package perfect;

import java.util.Random;

public class Computer
{
//  private String name;
//	private int score;
	int a,m;
	String name2;
	public void showFist()// 电脑出拳方法
	{
		Random r1 = new Random();
		a = r1.nextInt(3);// 随机生成一个1~3的数字,对应石头剪刀布。
		Random r2 = new Random();//生成电脑姓名的随机数。
		m = r2.nextInt(3);
		if (m == 0)
		{
			name2 = "曹操";
//			System.out.print("曹操");
//			c.showFist();
		}
		else if (m == 1)
		{
			name2 = "孙权";
//			System.out.print("孙权");
//			c.showFist();
		}
		else if (m == 2)
		{
			name2 = "刘备";
			System.out.print("刘备");
//			c.showFist();
		}
		if (a == 0)//生成随机数,对应前面的人名
		{
			System.out.println(name2 + "出的是  石头!");
		}
		else if (a == 1)
		{
			System.out.println(name2 + "出的是  剪刀!");
		}
		else if (a == 2)
		{
			System.out.println(name2 + "出的是  布!");
		}

//		Computer c = new Computer();//对computer进行实例化,用于调取showFist方法。
		
		
//		score ++;
	}
}

package perfect;

import java.util.Scanner;

public class Game
{
	// private Person person; // 甲方
	// private Computer computer; // 乙方
	// private int count;// 对战次数
	String str2, str3;
	static String name,cycle;// 关于姓名输入的字符串
	public int lost, win, deuce; //

	/**
	 * 初始化
	 */
	public void initial()
	{
		// 初始化工作

		for (int i = 0; i <= 16; i++)
		{
			System.out.print("*");
		}
		System.out.println();
		System.out.println("**" + "   开始    " + "      游戏     " + "  **   ");
		for (int i = 0; i <= 16; i++)
		{
			System.out.print("*");
		}
		System.out.println();
		System.out.println("出拳规则:0、石头 ,1、剪刀 ,2、布");
		System.out.print("请输入你的姓名:");
		Scanner s = new Scanner(System.in);
		boolean b = true;
		while (b)// 对所输入的姓名的字符串进行非空循环
		{
			name = s.nextLine();//定义name的值
			setName(name);//设置姓名
//			System.out.println("name = " + name);//程序初期用于测试是否讲name的值传入Person的showFist()方法
			if (!name.equals(""))// 判断所输入的字符串是后为空
			{
				b = false;
//				System.out.println("name = " + name);//初期用于测试是否传入name的值
			}
			else
			// 若为空则重新输入
			{
				System.out.print("你没有输入姓名,无法开始游戏,是否继续(y/n):");
				Scanner s2 = new Scanner(System.in);
				String str = s2.next();
				if ("y".equals(str))
				{
					b = true;
					System.out.print("请输入你的姓名:");
				}
				else
				{
					b = false;
					System.exit(0);
				}

			}

		}

	}

	public String getName()
	{
		return this.name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	/**
	 * 开始游戏
	 */
	public void startGame()// 开始游戏,控制游戏逻辑
	{
		Person p = new Person();
		Computer c = new Computer();
		Scanner s = new Scanner(System.in);
		Game game = new Game();
		boolean b = true;
		while (b)//对有事是否重新开始游戏进行一个循环对“n”则结束,“y”执行下一轮。
		{
			System.out.println("是否继续游戏(y/n)?");
			String cycle = s.nextLine();
			if (cycle.equals("n"))
			{
				b = false;
				break;
			}
			else if (cycle.equals("y"))
			{
				p.showFist();
				c.showFist();

				// System.out.println(p.n);//程序初期用于检查n的值时候传进来。
				// System.out.println(c.a);//程序初期用于检查a的值时候传进来。
				if (p.n == c.a)// 首先经过计算,确定了所有返回的可能值,通过if语句判断输出的值
				{
					System.out.println("deuce");
					deuce++;
				}
				else if (p.n - c.a == 1 || p.n - c.a == -2)
				{
					System.out.println("lost");
					lost++;
					// System.out.println(p.n);//程序初期用于检查n的值时候传进来。
					// System.out.println(c.a);//程序初期用于检查a的值时候传进来。
				}
				else
				{
					System.out.println("win");
					win++;
				}

				for (int i = 0; i <= 16; i++)
				{
					System.out.print("-");
				}
				System.out.println();
				System.out.println("deuce:\t" + deuce);
				System.out.println("win:\t" + win);
				System.out.println("lost:\t" + lost);
				b = true;

			}
			else{

				System.out.println("输入有误,是否重新输入(y/n)");
				Scanner s7 = new Scanner(System.in);
				String str7 = s7.next();
			}
		}
	}

	/**
	 * 显示比赛结果
	 */
	public void showResult()
	{
		/* 显示最后结果 */
		// 打印玩了多少局,电脑获胜还是人获胜
		Game game = new Game();
		game.startGame();
		for (int i = 0; i <= 16; i++)
		{
			System.out.print("-");
		}
		System.out.println();
		if (game.win > game.lost)
		{
			System.out.println("You are winner");
		}
		else if (game.win < game.lost)
		{
			System.out.println("You are loser");
		}
		else
		{
			System.out.println("You are deuce");
		}
	}

	/**
	 * 计算比赛结果
	 */
	// public int calcResult()
	// {
	// return 0;
	// }
}

package perfect;


import java.util.InputMismatchException;
import java.util.Scanner;

public class Person
{
	// private String name = "匿名";
	// private int score;
	int n;

	public void showFist() // 人出拳
	{
		System.out.print("你将出:");
		Scanner s = new Scanner(System.in);
		Game game = new Game();
		// 对用户输入的数字进行判断
		boolean b = true;
		while (b)
		{
			boolean b1 = false;
			do{
				try//捕获程序输入字符串异常。
				{
					n = s.nextInt();
					b1 = true;
				}
				catch (InputMismatchException n)//取出异常
				{
					s.next();
					System.out.println("输入有误,是否重新输入(y/n)");
					Scanner s5 = new Scanner(System.in);
					String str5 = s5.next();
					if ("y".equals(str5))//对异常进行判断,满足条件则继续执行
					{
						b = true;
						System.out.print("你将出:");
					}
					else if("n".equals(str5))
					{
						b = false;
						System.exit(0);
					}
					else//不满足条件则停止程序运行
					{
						System.out.println("输入有误,是否重新输入(y/n)");
//						Scanner s6 = new Scanner(System.in);
						String str6 = s5.next();
					}
				}
			}while(!b1);//直到不满足条件(!false = true)退出循环
			if (n < 3)//随机出石头剪刀布
			{
				switch (n)
				{
				case 0:
					System.out.print(game.name + "出的是  石头!");
					break;
				case 1:
					System.out.print(game.name + "出的是  剪刀!");
					break;
				case 2:
					System.out.print(game.name + "出的是  布!");
					break;
				}
				b = false;
				// 用户输入错误,让其选择是否重新输入
			}
			
			else//输入错误后重新输入 
			{
				System.out.print("您的输入错误,是否继续(y/n):");
				Scanner s2 = new Scanner(System.in);
				String str = s2.next();
				if ("y".equals(str))
				{
					b = true;
					System.out.print("你将出:");
				}
				else
				{
					b = false;
					System.exit(0);
				}
			}
		}
	}
}

package perfect;

public class StartGuess {

	/**
	 * 人机互动版猜拳游戏
	 * @param args
	 */
	public static void main(String[] args) {
		//游戏入口
		Game game = new Game();
		game.initial();
		game.showResult();
		game.startGame();
	}
}

这个是我在学校写的猜拳游戏的代码,希望对楼主有帮助
vnvlyp 2014-07-17
  • 打赏
  • 举报
回复
引用 3 楼 longtian1213 的回复:
Random rd = new Random(); int figur = Math.abs(rd.nextInt(ComputerParty.realCount+1))%3 ; 这两句我没看错的话,应该是电脑类ComputerParty 的成员方法把,在new的时候初始化了一次,貌似以后就没再变把,你放到showFigur方法中看看!
就是这里,figur应该每一回合都重新计算一次,不然你初始化了以后这个值就永远不变了。
kljjacky 2014-07-16
  • 打赏
  • 举报
回复
java模式用的不错
S117 2014-07-16
  • 打赏
  • 举报
回复
Random rd = new Random(); int figur = Math.abs(rd.nextInt(ComputerParty.realCount+1))%3 ; 这两句我没看错的话,应该是电脑类ComputerParty 的成员方法把,在new的时候初始化了一次,貌似以后就没再变把,你放到showFigur方法中看看!
码上行动_Light 2014-07-16
  • 打赏
  • 举报
回复
引用 1 楼 stonefeng 的回复:
呵呵,不就是猜个拳嘛,咋整的这么复杂?要这么多代码的?
呵呵,我是把框架都写上了其实,后面如果再有其他游戏,其他参与者什么的,直接扩展就好了。
疯癫行者 2014-07-16
  • 打赏
  • 举报
回复
呵呵,不就是猜个拳嘛,咋整的这么复杂?要这么多代码的?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧