1.动手动脑(五子棋棋盘排布)
(1)源程序
1 import java.io.*; 2 3 public class QiPan 4 { 5 //定义一个二维数组来充当棋盘 6 private String[][] board; 7 //定义棋盘的大小(宏定义) 8 private static int BOARD_SIZE = 15; 9 10 //初始化棋盘 11 public void initBoard() 12 { 13 //初始化棋盘数组 14 board = new String[BOARD_SIZE][BOARD_SIZE]; 15 //把每个元素赋为"╋",用于在控制台画出棋盘 16 for (int i = 0 ; i) 17 { 18 for ( int j = 0 ; j ) 19 { 20 board[i][j] = "╋"; 21 } 22 } 23 } 24 //在控制台输出棋盘的方法 25 public void printBoard() 26 { 27 //打印每个数组元素 28 for (int i = 0 ; i ) 29 { 30 for ( int j = 0 ; j ) 31 { 32 //打印数组元素后不换行 33 System.out.print(board[i][j]); 34 } 35 //每打印完一行数组元素后输出一个换行符 36 System.out.print("\n"); 37 } 38 } 39 public static void main(String[] args)throws Exception 40 { 41 QiPan gb = new QiPan(); 42 gb.initBoard(); 43 gb.printBoard(); 44 //这是用于获取键盘输入的方法 45 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 46 String inputStr = null; 47 System.out.println("请输入您下棋的座标,应以x,y的格式:"); 48 //br.readLine():每当在键盘上输入一行内容按回车,刚输入的内容将被br读取到。 49 while ((inputStr = br.readLine()) != null) 50 { 51 //将用户输入的字符串以逗号(,)作为分隔符,分隔成2个字符串 52 String[] posStrArr = inputStr.split(","); 53 //将2个字符串转换成用户下棋的座标 54 int xPos = Integer.parseInt(posStrArr[0]); 55 int yPos = Integer.parseInt(posStrArr[1]); 56 //把对应的数组元素赋为"●"。 57 gb.board[xPos - 1][yPos - 1] = "●"; 58 59 while(true) 60 { 61 int xvalue = (int) ( Math.random() * 15 ); 62 int yvalue = (int) ( Math.random() * 15 ); 63 if(gb.board[xvalue - 1][yvalue - 1] .equals("●")==false|| 64 gb.board[xPos - 1][yPos - 1].equals("*")==false) 65 { 66 gb.board[xvalue - 1][yvalue - 1] = "*"; 67 break; 68 } 69 } 70 71 /* 72 电脑随机生成2个整数,作为电脑下棋的座标,赋给board数组。 73 还涉及 74 1.座标的有效性,只能是数字,不能超出棋盘范围 75 2.如果下的棋的点,不能重复下棋。 76 3.每次下棋后,需要扫描谁赢了 77 */ 78 gb.printBoard(); 79 System.out.println("请输入您下棋的座标,应以x,y的格式:"); 80 } 81 } 82 }
(2)实验截图
2.动手动脑(数字转换成汉字)
(1)源程序
1 public class Num2Rmb 2 { 3 private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" , 4 "伍" , "陆" , "柒" , "捌" , "玖"}; 5 private String[] unitArr = {"十" , "百" , "千","万","十万","百万"}; 6 7 /** 8 * 把一个四位的数字字符串变成汉字字符串 9 * @param numStr 需要被转换的四位的数字字符串 10 * @return 四位的数字字符串被转换成的汉字字符串。 11 */ 12 private String toHanStr(String numStr) 13 { 14 String result = ""; 15 int numLen = numStr.length(); 16 //依次遍历数字字符串的每一位数字 17 for (int i = 0 ; i) 18 { 19 //把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48 20 //因此把char型数字减去48得到int型数字,例如‘4‘被转换成4。 21 int num = numStr.charAt(i) - 48; 22 //如果不是最后一位数字,而且数字不是零,则需要添加单位(千、百、十) 23 if ( i != numLen - 1 && num != 0) 24 { 25 result += hanArr[num] + unitArr[numLen - 2 - i]; 26 } 27 //否则不要添加单位 28 else 29 { 30 31 //上一个数是否为“零”,不为“零”时就添加 32 if(result.length()>0 && hanArr[num].equals("零") && result.charAt(result.length()-1)==‘零‘) 33 continue; 34 result += hanArr[num]; 35 } 36 } 37 //只有个位数,直接返回 38 if(result.length()==1) 39 return result; 40 41 int index=result.length()-1; 42 while(result.charAt(index)==‘零‘){ 43 index--; 44 } 45 if(index!=result.length()-1) 46 return result.substring(0,index+1); 47 else { 48 return result; 49 } 50 } 51 52 public static void main(String[] args) 53 { 54 Num2Rmb nr = new Num2Rmb(); 55 System.out.println("只支持整数(0~百万)"); 56 //测试把一个四位的数字字符串变成汉字字符串 57 System.out.println(nr.toHanStr("0")); 58 System.out.println(nr.toHanStr("1")); 59 System.out.println(nr.toHanStr("10")); 60 System.out.println(nr.toHanStr("15")); 61 System.out.println(nr.toHanStr("110")); 62 System.out.println(nr.toHanStr("123")); 63 System.out.println(nr.toHanStr("105")); 64 System.out.println(nr.toHanStr("1000")); 65 System.out.println(nr.toHanStr("1100")); 66 System.out.println(nr.toHanStr("1110")); 67 System.out.println(nr.toHanStr("1005")); 68 System.out.println(nr.toHanStr("1105")); 69 System.out.println(nr.toHanStr("1111")); 70 System.out.println(nr.toHanStr("10000")); 71 System.out.println(nr.toHanStr("10001")); 72 System.out.println(nr.toHanStr("10011")); 73 System.out.println(nr.toHanStr("10111")); 74 System.out.println(nr.toHanStr("11111")); 75 System.out.println(nr.toHanStr("11000")); 76 System.out.println(nr.toHanStr("11100")); 77 System.out.println(nr.toHanStr("11110")); 78 System.out.println(nr.toHanStr("101110")); 79 System.out.println(nr.toHanStr("1001110")); 80 81 } 82 }
(2)实验截图
3.动手动脑(大数计算)
(1)源程序
1 import java.util.Scanner; 2 3 public class Dashu{ 4 public static int[]add(int []a,int []b){ 5 int digit=0;//位数 6 int[]c=new int[a.length]; 7 for(int i=a.length-1;i>=0;i--) 8 { 9 c[i]=a[i]+b[i]+digit; 10 if(c[i]<10) 11 digit=0; 12 else 13 { 14 c[i]=c[i]-10; 15 digit=1; 16 } 17 } 18 return c; 19 } 20 public static int []sub(int []a,int[]b,int w) 21 { 22 int digit=0; 23 int[]c=new int[a.length]; 24 for(int i=a.length-1;i>=0;i--) 25 { 26 if(w<=0) 27 { 28 c[i]=b[i]-a[i]-digit; 29 if(c[i]>=0) 30 { digit=0;} 31 else 32 { 33 c[i]=c[i]+10; 34 digit=1; 35 } 36 } 37 else 38 { 39 c[i]=a[i]-b[i]-digit; 40 if(c[i]>=0) 41 {digit=0;} 42 else 43 { 44 c[i]=c[i]+10; 45 digit=1; 46 } 47 } 48 } 49 return c; 50 } 51 public static void main(String[]args){ 52 int a[]=new int[50]; 53 int b[]=new int[50]; 54 int m=0; 55 int n=0; 56 int s=0; 57 int t=0;int w=0; 58 Scanner in=new Scanner(System.in); 59 System.out.println("请输入第一个大数:"); 60 String aa=in.next(); 61 System.out.println("请输入第二个大数:"); 62 String bb=in.next(); 63 m=a.length-aa.length(); 64 n=b.length-bb.length(); 65 if(aa.length()>bb.length()) 66 { 67 w=1; 68 } 69 else if (aa.length()<bb.length()) 70 { 71 w=-1; 72 } 73 else 74 {w = aa.compareTo(bb);} 75 for (int i = 0; i) 76 { 77 a[m++] = aa.charAt(i) - 48; 78 } 79 for (int j = 0; j ) 80 { 81 b[n++] = bb.charAt(j) - 48; 82 } 83 int[] c = Dashu.add(a, b); 84 for (int k = 0; k ) 85 { 86 if (c[k] > 0) 87 { 88 s = k; 89 break; 90 } 91 } 92 System.out.print("大数相加的结果为:"); 93 for (int i = s; i ) { 94 System.out.print(c[i]); 95 } 96 System.out.println(); 97 int[] d = Dashu.sub(a, b, w); 98 for (int k = 0; k ) 99 { 100 if (d[k] > 0) 101 { 102 t = k; 103 break; 104 } 105 } 106 System.out.print("大数相减的结果为:"); 107 if (w <0) 108 System.out.print("-"); 109 for (int i = t; i ) 110 { 111 System.out.print(d[i]); 112 } 113 System.out.println(); 114 System.out.println(); 115 System.out.println(); 116 System.out.println(); 117 118 119 } 120 }
(2)实验截图
动手动脑,无法自拔(3)课时作业6