1、我的垃圾代码:想法简单,没有良好交互,非常粗糙

package test;
public class Test {

	public static void main(String[] args) {
		T t=new T();
		t.game();
	}
}
class T{
	/*
	 * 1、电脑每次随机生成0,1,2
	 * 2、0代表石头 1代表剪刀 2代表布
	 * 3、我的想法是直接列举所有情况,用选择语句暴力破解
	 */
	public void game() {
		int ds=(int)(Math.random()*3);//定义第一个玩家
		int lwb=(int)(Math.random()*3);//定义第二个玩家
		if(ds==0&&lwb==0) {
			System.out.println("两人都出的是石头!平局");
		}
		else if(ds==1&&lwb==1) {
			System.out.println("两人都出的是剪刀!平局");
		}
		else if(ds==2&&lwb==2) {
			System.out.println("两人都出的是布!平局");
		}
		else {
			if(ds==0&&lwb==1) {
				System.out.println("ds出的是石头,lwb出的是剪刀!ds获胜");
			}
			else if(ds==0&&lwb==2) {
				System.out.println("ds出的是石头,lwb出的是布!lwb获胜");
			}
			else if(ds==1&&lwb==2) {
				System.out.println("ds出的是剪刀,lwb出的是布!ds获胜");
			}
			else {
				if(lwb==0&&ds==1) {
					System.out.println("lwb出的是石头,ds出的是剪刀!lwb获胜");
				}
				else if(lwb==0&&ds==2) {
					System.out.println("lwb出的是石头,ds出的是布!ds获胜");
				}
				else if(lwb==1&&ds==2) {
					System.out.println("lwb出的是剪刀,ds出的是布!lwb获胜");
				}
				//..后面可以优化
			}
		}
	}
}

 2、优化代码

package test;
import java.util.*;
public class Test {
//设计石头剪刀布
	/*
	 * 编写一个猜拳游戏
	 * 1、电脑每次随机生成0,1,2
	 * 2、0代表石头 1代表剪刀 2代表布
	 * 3、显示输赢次数,假定玩三局
	 */
	public static void main(String[] args) {
		//创建一个玩家对象
		Tom t=new Tom();
		//用来记录最后输赢次数
		int isWinCount=0;
		
		//创建一个二维数组用来接收局数,Tom和电脑的出拳情况
		int[][] arr1=new int[3][3];
		int j=0;
		
		//创建一个一维数组用来接收输赢情况
		String[] arr2=new String[3];
		
		Scanner scanner=new Scanner(System.in);
		for(int i=0;i<3;i++) {//比赛三次
			//获取玩家出的手势类型
			System.out.println("请输入你要出的手势(0-拳头 1-剪刀 2-布):");
			int num=scanner.nextInt();
			t.setTomGuessNum(num);
			int tomGuess=t.getTomGuessNum();
			arr1[i][j+1]=tomGuess;
			
			//获取电脑出的手势类型
			int comGuess=t.computerNum();
			arr1[i][j+2]=comGuess;
			
			//将玩家和电脑所做出的手势进行比较
			String isWin=t.vsComputer();
			arr2[i]=isWin;
			arr1[i][j]=t.count;
			
			//对每一局的情况进行输出
			System.out.println("==================================================");
			System.out.println("局数\t玩家的出拳\t电脑的出拳\t输赢情况");
			System.out.println(t.count+"\t"+tomGuess+"\t\t"+comGuess+"\t\t"+t.vsComputer());
			System.out.println("==================================================");
			System.out.println();
			isWinCount=t.winCount(isWin);
		}
		
		//对游戏的最终结果进行输出
		System.out.println("局数\t玩家的出拳\t电脑的出拳\t\t输赢情况");
		for(int a=0;a<arr1.length;a++) {
			for(int b=0;b<arr1[a].length;b++){
				System.out.print(arr1[a][b]+"\t\t");
			}
			System.out.print(arr2[a]);
			System.out.println();
		}
		System.out.println("你赢了"+isWinCount+"次");
	}
}
class Tom{
	//玩家出拳类型
	int tomGuessNum;//0,1,2
	//电脑出拳类型
	int comGuessNum;//0,1,2
	//玩家赢的次数
	int winCountNum;
	//比赛次数
	int count=1;//一共比赛3次
	
	public void showInfo() {
		//...
	}
	
	/*
	 * 电脑随机生成猜拳的数字的方法
	 */
	public int computerNum() {
		Random r=new Random();
		comGuessNum=r.nextInt(3);//返回0~2的随机数
		return comGuessNum;
	}
	
	/*
	 * 设置玩家随机生成猜拳的数字的方法
	 */
	public void setTomGuessNum(int tomGuessNum) {
		if(tomGuessNum>2||tomGuessNum<0) {
			//抛出一个异常
			throw new IllegalArgumentException("数字输入错误!");
		}
		this.tomGuessNum=tomGuessNum;
	}
	
	public int getTomGuessNum() {
		return tomGuessNum;
	}
	
	/*
	 * 比较猜拳的结果
	 */
	public String vsComputer() {
		if(tomGuessNum==0&&comGuessNum==1) {
			return "你赢了";
		}
		else if(tomGuessNum==1&&comGuessNum==2) {
			return "你赢了";
		}
		else if(tomGuessNum==2&&comGuessNum==0) {
			return "你赢了";
		}
		else if(tomGuessNum==comGuessNum) {
			return "平局";
		}
		else {
			return "你输了";
		}
	}
	
	/*
	 * 记录玩家赢的次数
	 */
	public int winCount(String s) {
		count++;//控制玩的次数
		if(s.equals("你赢了")) {
			winCountNum++;
		}
		return winCountNum;
	}
}