在程序里定义一个剪刀石头布的规则,然后定义两个字符型变量,接着从键盘上接收两个数据分别赋给这两个变量,再按照已经设定好了的规则来 比较,最后输出结果.
这个需要首先导入Scanner类:import java.util.Scanner;,定义一个Scanner对象,
Scanner p = new Scanner(System.in);
然后定义一个字符串变量,先从键盘上接收这个字符串的内容,
String p1 = p.next();
//大神说,要想接收整型变量就用.nextInt;要想接收字符串类型就用.next(),如果要接收double型变量,就用.nextdouble().
这个需要首先导入Scanner类:import java.util.Scanner;,定义一个Scanner对象,
Scanner p = new Scanner(System.in);
然后定义一个字符串变量,先从键盘上接收这个字符串的内容,
String p1 = p.next();
//大神说,要想接收整型变量就用.nextInt;要想接收字符串类型就用.next(),如果要接收double型变量,就用.nextdouble().
为了准确接收数据,我们只接收处理所输入数据的首字母,这里要用到String类里面的subString方法,

把这个字符串的首字母赋给另一个字符串变量,然后再确定一下所输入数据是否J B S 中的一个,这里用到正则表达式.使用正则表达式时需要注意,当编译一个正则表达式时,Pattern p = Pattern.compile("");的双引号里面是一个正则表达式,不是一个字符串.
当确定输入数据合法时,就可以进行比较了.
(另外,char只是一个基本类型,而String 是一个类,可以直接引用。
比如char c='c';不能直接对c调用方法。
String s="abc"; 这时可以调用s.charAt(0);等方法,因为String是类,这是就是对象的调用了 )
(关于.charAt(0),
(另外,char只是一个基本类型,而String 是一个类,可以直接引用。
比如char c='c';不能直接对c调用方法。
String s="abc"; 这时可以调用s.charAt(0);等方法,因为String是类,这是就是对象的调用了 )
(关于.charAt(0),
String str = "abc";
char ch = str.charAt(0);
char ch2 = str.charAt(1);
这时候ch是a,ch2是b;)
本程序完整的代码如下:
1 import java.util.Scanner;
2 import java.util.regex.*;
3
4 public class JiandaoShitouBu{
5 //设定一个从键盘接收数据并按剪刀石头布的规则相比较并得出结果的程序
6 public static void main(String args[]){
7 Scanner p = new Scanner(System.in);
8 System.out.println("**********猜拳游戏开始,请输入:J-剪刀,"
9 + "S-石头,B-布**********");
10 System.out.println("---------如要退出请Player1输入exit-----------");
11 int ciShu = 0;
12 while (true){
13 ciShu ++;
14 System.out.println("第" + ciShu + "局开始:Player1 first:");
15 String p1 = p.next();
16 if (p1.equalsIgnoreCase("exit")){
17 System.out.println("Player1输入了退出指令,游戏结束");
18 p.close();
19 break;
20 }
21 String player1 = p1.substring(0,1); //取输入字符串的首字
22 System.out.println("Player2 please:");
23 String p2 = p.next();
24 String player2 = p2.substring(0,1); //取输入字符串的首字
25 caiQuan(player1,player2);
26 }
27 }
28
29 private static void caiQuan(String player1,String player2) {
30 Pattern pat = Pattern.compile("[jsbJSB]");
31 //创建j,s,b的匹配器,大小写均可
32 Matcher m1 = pat.matcher(player1);
33 Matcher m2 = pat.matcher(player2);
34 if(m1.matches()&&m2.matches()){
35 if(player1.equalsIgnoreCase(player2)){
36 System.out.println("平局!");
37 }else if (player1.equalsIgnoreCase("j")) {
38 if(player2.equalsIgnoreCase("s")){
39 System.out.println("Player1出的是剪刀,Player2出的"
40 + "是石头,Player2 win!");
41 }else{System.out.println("Player1出的是剪刀,Player2出"
42 + "的是布,Player1 win!");
43 }
44 }else if(player1.equalsIgnoreCase("s")){
45 if(player2.equalsIgnoreCase("j")){
46 System.out.println("Player1出的是石头,Player2出的"
47 + "是剪刀,Player1 win!");
48 }else{System.out.println("Player1出的是石头,Player2出"
49 + "的是布,Player2 win!");
50 }
51 }else {
52 if(player2.equalsIgnoreCase("j")){
53 System.out.println("Player1出的是布,Player2出的"
54 + "是剪刀,Player2 win!");
55 }else{System.out.println("Player1出的是布,Player2出"
56 + "的是石头,Player1 win!");
57 }
58 }
59 }else{
60 System.out.println("输入错误,请参考说明重新输入!");
61 }
62 }
63 }