Java小练习及答案.docx
- 文档编号:3818945
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:26
- 大小:23.76KB
Java小练习及答案.docx
《Java小练习及答案.docx》由会员分享,可在线阅读,更多相关《Java小练习及答案.docx(26页珍藏版)》请在冰豆网上搜索。
Java小练习及答案
Arrays
难度
★★★★★
课程名
CoreJava(SL275)
章节
Module4Arrays
知识点
Arrays
模块
J2EE
作业详细内容介绍
1、五子棋游戏()
编写程序实现两人互玩的五子棋游戏,游戏开始时要求输出以下棋盘,然后提示黑方和白方下子,玩家从命令行输入:
af,表示在a,f坐标落子,其中黑方的子用@表示,白方的子用O表示,每有一方落子,则要重新输出棋盘的状态.程序还要能判断某一方获胜,并终止程序。
abcdefghijklmnop
a****************
b****************
c****************
d****************
e****************
f****************
g****************
h****************
i****************
j****************
k****************
l****************
m****************
o****************
p****************
2、砸金花游戏
编写程序模拟砸金花的游戏,程序开始时要求用户输入赌注,并在一副牌中随机发两手牌,每手牌三张,然后比较这两手牌的大小,若A比B大,则用户赢得赌注,反之,则输掉赌注。
每手牌的大小比较规则:
1,三条>同花顺>同花>顺子>对子>单张
2,处于同一级别的两手牌比较最大的一张牌的大小
作业截图
答案1:
importjava.util.Scanner;
publicclassFiveChess{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
//提示用户
System.out.println("请输入棋盘的大小:
");
Scannerin=newScanner(System.in);
intN=in.nextInt();
//创建和初始化棋盘
char[][]board=newchar[N][N];
for(inti=0;i for(intj=0;j board[i][j]='*'; } } //输出棋盘 printBoard(board); //使用boolean类型的变量表示黑方或者白方: true: 表示黑方false: 表示白方 booleanisBlack=true; //游戏开始 target: while(true){ //提示某方下棋 System.out.println("请"+(isBlack? '黑': '白')+"方下子: "); //控制台输入下棋的坐标位置 Stringinput=in.next(); //处理退出问题 if("EXIT".equalsIgnoreCase(input)){ System.out.println("GameOver! "); break; } //判断输入的下标的位置是否正确,是否符合要求 for(intindex=0;index if(input.length()<=1||! Character.isLetter(input.charAt(index))){ System.out.println("输入有误,请重新输入! "); continuetarget; } } //判断输入的下标是否越界 if(input.charAt(0)>N+'a'||input.charAt (1)>N+'a'){ System.out.println("输入有误,请重新输入! "); continue; } //計算和输出下棋的坐标位置 intx=input.charAt(0)-'a'; inty=input.charAt (1)-'a'; //System.out.println("坐标: "+x+","+y); //判断输入的下标位置上是否已经有棋子 if(board[x][y]=='@'||board[x][y]=='O'){//该位置是否已经有棋子了 System.out.println("该位置已经有棋子,请重新指定坐标! "); continue; } //下棋 board[x][y]=isBlack? '@': 'O'; //输出棋盘 printBoard(board); //判断输赢情况 if(isWin(board,isBlack,x,y)){ System.out.println((isBlack? "黑": "白")+"方获胜! "); break; } //黑白方交换 isBlack=! isBlack; } } privatestaticvoidprintBoard(char[][]board){ //输出星形的内容 for(inti=0;i System.out.print((char)('a'+i)+"\t");//输出行坐标(左边的字母) for(intj=0;j System.out.print(board[i][j]+""); } System.out.println();//输出换行符 } //输出第最后一行的内容 System.out.print("\t");//输出第一行开头的空格 for(inti=0;i System.out.print((char)('a'+i)+""); } System.out.println();//输出换行符 } /** *判断胜负 *@paramboard表示棋盘 *@paramisBlack表示刚下棋的一方 *@paramx表示横坐标 *@paramy表示纵坐标 *@return返回代表刚下棋的一方是否获胜 */ privatestaticbooleanisWin(char[][]board,booleanisBlack,intx,inty){ //代表和下棋方对应的棋子 charchess=isBlack? '@': 'O'; returnisShuipingWin(board,chess,x,y) ||isChuizhiWin(board,chess,x,y) ||isZuoXieWin(board,chess,x,y) ||isYouXieWin(board,chess,x,y); } //判断水平方向上的胜负情况 privatestaticbooleanisShuipingWin(char[][]board,charchess,intx,inty){ //1,循环找到左边界(不能直接判断到边界,因为可能最后一次循环过来会出现异常情况) while(y>0&&board[x][y]==chess){ y--; //System.out.println("水平方向处理"); } //2,判断边界情况时,最边界的棋子为何种颜色 intcount=0; if(board[x][y]==chess){ count=1; } //3,向右循环统计有多少个连续的同颜色棋子 y++; while(y count++; if(count==5){ returntrue; } y++; } returnfalse; } //判断垂直方向上的胜负情况 privatestaticbooleanisChuizhiWin(char[][]board,charchess,intx,inty){ //1,循环找到上边界(白子的边界) while(x>0&&board[x][y]==chess){ x--; //System.out.println("垂直方向处理"); } //2,判断边界情况时,最边界的棋子为何种颜色 intcount=0; if(board[x][y]==chess){ count=1; } //3,向下循环统计有多少个连续的同颜色棋子 x++; while(x count++; if(count==5){ returntrue; } x++; } returnfalse; } //判断左斜方向上的胜负情况 privatestaticbooleanisZuoXieWin(char[][]board,charchess,intx,inty){ //1,循环找到左上边界 //情况: 如果第一个就下最左上角的位置上,该循环不被执行。 while(y>0&&x>0&&board[x][y]==chess){ y--; x--; //System.out.println("左斜方向处理"); } //2,判断边界情况时,最边界的棋子为何种颜色 intcount=0; if(board[x][y]==chess){ count=1; } //3,向右下循环统计有多少个连续的同颜色棋子 y++; x++; while(x count++; if(count==5){ returntrue; } y++; x++; } returnfalse; } //判断右斜方向上的胜负情况 publicstaticbooleanisYouXieWin(char[][]board,charchess,intx,inty){ //1,循环找到右上边界 while(x>0&&y x--; y++; //System.out.println("右斜方向处理"); } /** *2,判断边界情况时,最边界的棋子为何种颜色 *判断条件(y *在上面的while循环中最后一个次循环结束的时候y值可能已经等于board[0].length的长度了。 */ intcount=0; if(y count=1; } //3,向左下循环统计有多少个连续的同颜色棋子 y--; x++; while(x count++; if(count==5){ returntrue; } y--; x++; } returnfalse; } } 答案2: 作业提交时间及方法 作业题目 Arrays 难度 ★★★★ 课程名 CoreJava(SL275) 章节 Module4Arrays 知识点 Arrays 模块 J2EE 作业详细内容介绍 1、从键盘输入十个整数,升序输出; 2、用二维字符数组保存一首唐诗(五言或七言),每一行代表一句,要求将这首唐诗按照古文的方式输出出来 (从右至左,竖行排列)。 。 。 3、九宫格; 4、用数组实现约瑟夫出圈问题。 n个人排成一圈,从第一个人开始报数,从1开始报,报到m的人出圈,剩下的 人继续开始从1报数,直到所有的人都出圈为止。 对于给定的n,m,求出所有人的出圈顺序。 5、将所有学生的课程成绩保留在一个二维数组中,每一行代表一个学生的成绩,每一列代表一门课程的成绩; 将每门课程的名称保留在一个一维数组中(课程的下标序号与二维数组的列号匹配); 将每个学生的姓名保留在一个一维数组中(学生的下标序号与二维数组的行号匹配); 要求编写程序实现成绩的查询,要求程序运行时从命令行输入统计命令及参数,程序则输出结果, 例如: AVGCOUcorejava: 统计课程corejava的平均分。 AVGSTU张三: 统计学生张三的平均分。 SORTsum: 列出每个学生所有课程总分的排名。 SORTcorejava: 列出corejava课程的成绩的排名。 GET张三sum: 统计学生张三的总分。 GET张三corejava: 统计张三的corejava课程的成绩。 作业截图 答案1: importjava.util.Scanner; publicclassSort{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub intlength=10; int[]arr=newint[length]; System.out.println("请输入10个整数: "); Scannerin=newScanner(System.in); for(inti=0;i arr[i]=Integer.parseInt(in.next()); } //升序排序 for(inti=0;i for(intj=0;j if(arr[i] inttemp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } for(inti=0;i System.out.print(arr[i]+""); } } } 请输入10个整数: 9876543210 0123456789 答案2: publicclassgusi01{ publicstaticvoidmain(String[]args){ char[][]a={ {'朝','辞','白','帝','彩','云','间'}, {'千','里','江','陵','一','日','还'}, {'两','岸','猿','声','啼','不','住'}, {'轻','舟','已','过','万','重','山'}}; //方法一:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 练习 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)