Java小练习及答案.doc_第1页
Java小练习及答案.doc_第2页
Java小练习及答案.doc_第3页
Java小练习及答案.doc_第4页
Java小练习及答案.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Arrays难度课程名CoreJava(SL275)章节Module 4 Arrays知识点Arrays模块J2EE作业详细内容介绍1、五子棋游戏()编写程序实现两人互玩的五子棋游戏,游戏开始时要求输出以下棋盘,然后提示黑方和白方下子,玩家从命令行输入:a f,表示在a,f坐标落子,其中黑方的子用表示,白方的子用O表示,每有一方落子,则要重新输出棋盘的状态.程序还要能判断某一方获胜,并终止程序。 a b c d e f g h i j k l m n o pa * * * * * * * * * * * * * * * *b * * * * * * * * * * * * * * * *c * * * * * * * * * * * * * * * *d * * * * * * * * * * * * * * * *e * * * * * * * * * * * * * * * *f * * * * * * * * * * * * * * * *g * * * * * * * * * * * * * * * *h * * * * * * * * * * * * * * * *i * * * * * * * * * * * * * * * *j * * * * * * * * * * * * * * * *k * * * * * * * * * * * * * * * *l * * * * * * * * * * * * * * * *m * * * * * * * * * * * * * * * *o * * * * * * * * * * * * * * * *p * * * * * * * * * * * * * * * *2、 砸金花游戏编写程序模拟砸金花的游戏,程序开始时要求用户输入赌注,并在一副牌中随机发两手牌,每手牌三张,然后比较这两手牌的大小,若A比B大,则用户赢得赌注,反之,则输掉赌注。每手牌的大小比较规则:1,三条同花顺同花顺子对子单张2,处于同一级别的两手牌比较最大的一张牌的大小作业截图答案1:import java.util.Scanner;public class FiveChess /* * param args */public static void main(String args) / TODO Auto-generated method stub/提示用户System.out.println(请输入棋盘的大小:);Scanner in = new Scanner(System.in);int N = in.nextInt();/创建和初始化棋盘char board = new charNN;for (int i = 0; i board.length; i+) for (int j = 0; j board.length; j+) boardij = *;/ 输出棋盘printBoard(board);/使用boolean类型的变量表示黑方或者白方:true:表示黑方 false: 表示白方boolean isBlack = true;/游戏开始target: while (true) /提示某方下棋System.out.println(请 + (isBlack ? 黑 : 白) + 方下子:);/ 控制台输入下棋的坐标位置String input = in.next();/ 处理退出问题if (EXIT.equalsIgnoreCase(input) System.out.println(Game Over!);break;/判断输入的下标的位置是否正确,是否符合要求for (int index = 0; index input.length(); index+) if(input.length() N + a | input.charAt(1) N + a)System.out.println(输入有误,请重新输入!);continue;/ 計算和输出下棋的坐标位置int x = input.charAt(0) - a;int y = input.charAt(1) - a;/System.out.println(坐标:+ x + , + y);/ 判断输入的下标位置上是否已经有棋子if (boardxy = | boardxy = O) / 该位置是否已经有棋子了System.out.println(该位置已经有棋子,请重新指定坐标!);continue;/ 下棋boardxy = isBlack ? : O;/ 输出棋盘printBoard(board);/判断输赢情况if (isWin(board, isBlack, x, y) System.out.println(isBlack ? 黑 : 白) + 方获胜!);break;/ 黑白方交换isBlack = !isBlack;private static void printBoard(char board) / 输出星形的内容for (int i = 0; i board.length; i+) / 输出每一行的内容System.out.print(char) (a + i) + t);/ 输出行坐标(左边的字母)for (int j = 0; j board.length; j+) / 输出该行的内容System.out.print(boardij + );System.out.println();/ 输出换行符/ 输出第最后一行的内容System.out.print(t);/ 输出第一行开头的空格for (int i = 0; i 0 & boardxy = chess) y-;/System.out.println(水平方向处理);/ 2,判断边界情况时,最边界的棋子为何种颜色int count = 0;if (boardxy = chess) count = 1;/ 3,向右循环统计有多少个连续的同颜色棋子y+;while (y 0 & boardxy = chess) x-;/System.out.println(垂直方向处理);/2, 判断边界情况时,最边界的棋子为何种颜色int count = 0;if (boardxy = chess) count = 1;/ 3,向下循环统计有多少个连续的同颜色棋子x+;while (x 0 & x 0 & boardxy = chess) y-;x-;/System.out.println(左斜方向处理);/ 2,判断边界情况时,最边界的棋子为何种颜色int count = 0;if (boardxy = chess) count = 1;/ 3,向右下循环统计有多少个连续的同颜色棋子y+;x+;while (x board.length & y 0 & y board0.length & boardxy = chess) x-;y+;/System.out.println(右斜方向处理);/* * 2,判断边界情况时,最边界的棋子为何种颜色 * 判断条件(y board0.length) 的特别解释: * 在上面的while循环中最后一个次循环结束的时候y值可能已经等于board0.length的长度了。 */int count = 0;if (y board0.length & boardxy = chess) count = 1;/ 3,向左下循环统计有多少个连续的同颜色棋子y-;x+;while (x = 0 & boardxy = chess) count+;if (count = 5) return true;y-;x+;return false;答案2: 作业提交时间及方法作业题目Arrays难度课程名CoreJava(SL275)章节Module 4 Arrays知识点Arrays模块J2EE作业详细内容介绍1、 从键盘输入十个整数,升序输出; 2、用二维字符数组保存一首唐诗(五言或七言),每一行代表一句,要求将这首唐诗按照古文的方式输出出来(从右至左,竖行排列)。3、 九宫格;4、 用数组实现约瑟夫出圈问题。 n个人排成一圈,从第一个人开始报数,从1开始报,报到m的人出圈,剩下的人继续开始从1报数,直到所有的人都出圈为止。对于给定的n,m,求出所有人的出圈顺序。5、 将所有学生的课程成绩保留在一个二维数组中,每一行代表一个学生的成绩,每一列代表一门课程的成绩;将每门课程的名称保留在一个一维数组中(课程的下标序号与二维数组的列号匹配);将每个学生的姓名保留在一个一维数组中(学生的下标序号与二维数组的行号匹配);要求编写程序实现成绩的查询,要求程序运行时从命令行输入统计命令及参数,程序则输出结果,例如:AVGCOU corejava:统计课程corejava的平均分。AVGSTU 张三:统计学生张三的平均分。SORT sum:列出每个学生所有课程总分的排名。SORT corejava:列出corejava课程的成绩的排名。GET 张三 sum:统计学生张三的总分。GET 张三 corejava:统计张三的corejava课程的成绩。作业截图答案1:import java.util.Scanner;public class Sort /* * param args */public static void main(String args) / TODO Auto-generated method stubint length = 10;int arr = new intlength;System.out.println(请输入10个整数 :);Scanner in = new Scanner(System.in);for (int i = 0; i length; i+) arri = Integer.parseInt(in.next();/升序排序for (int i = 0; i arr.length; i+)for (int j = 0; j arr.length; j+)if (arri arrj) int temp = arri;arri = arrj;arrj = temp;for (int i = 0; i arr.length; i+) System.out.print(arri + );请输入10个整数 :9 8 7 6 5 4 3 2 1 00 1 2 3 4 5 6 7 8 9答案2: public class gusi01 public static void main(String args) char a=朝,辞,白,帝,彩,云,间,千,里,江,陵,一,日,还,两,岸,猿,声,啼,不,住,轻,舟,已,过,万,重,山; /方法一:for(int i=0;ia0.length;i+)/控制输出结果的行for(int j=0;ja.length;j+)/控制输出结果的列System.out.print(a3-ji+ );/而打印的时候,打印的确是原有古诗二维数组的内容即原来的位置。System.out.print(n); /方法二:for(int i=0;i=0;j-) System.out.print(aji+ ); System.out.println();输出:轻 两 千 朝 舟 岸 里 辞 已 猿 江 白 过 声 陵 帝 万 啼 一 彩 重 不 日 云 山 住 还 间 答案3: import java.util.Scanner;public class Test /* * param args */public static void main(String args) / TODO Auto-generated method stubSystem.out.println(请输入一个奇数 :);Scanner in = new Scanner(System.in);int N = in.nextInt();/为数组赋初始值int data = new intNN;for (int i = 0; i N; i+) for (int j = 0; j N; j+)dataij = 0;printArray(data);/计算第一个元素存放的位置int row = 0; /声明行变量int col = N / 2; /声明列变量for (int i = 1; i = N * N; i+) System.out.println(data+row+col+ =+ i);datarowcol = i;/ 始终保证是右上角的位置;row-;col+;/ 行越界,列不越界;if (row 0 & col = 0 & col = N) col = 0;/ row不变;/ 最右上角 | 右上角有值;if (row = N) | (datarowcol != 0) row += 2;col-;printArray(data);private static void printArray(int data) / TODO Auto-generated method stubfor (int i = 0; i data.length; i+) for (int j = 0; j data.length; j+) System.out.print(dataij 10 ? 0+dataij:dataij)+ );System.out.println();请输入一个奇数 :308 01 06 03 05 07 04 09 02请输入一个奇数 :517 24 01 08 15 23 05 07 14 16 04 06 13 20 22 10 12 19 21 03 11 18 25 02 09答案4:public class Out /* * param args */public static void main(String args) / TODO Auto-generated method stubint arr = new int 1, 2, 3, 4, 5, 6, 7, 8 ;out(arr, 8, 3, 0); /* * param array :表示一个存放数据的一维数组; * param length :数组中元素的个数(共有多少人围成的圈); * param target :目标数(从1开始报,报到m的人出圈) * param start :从数组中哪个元素开始的坐标(第一次时指定从哪一个人开始报数); * 注意:数组起始下标从0开始。 */private static void out(int array, int length, int target, int start) if (length = 0)return;int index = (start + target) % length; / 调整下次开始的位置for (int i = index + 1; i length; i+)/ 将数组向左移动arrayi - 1 = arrayi;out(array, length - 1, target, index);演示结果:4 out8 out5 out2 out1 out3 out7 out6 out答案5:import java.math.BigDecimal;import java.text.NumberFormat;import java.util.Scanner;public class StudentManagment public static void main(String args) int scores=/六个学生,五门课程的成绩85,93,64,77,63,91,88,67,78,90,75,88,89,91,58,82,88,67,79,91,82,81,77,82,88,71,81,76,69,91;String courses=corejava,unix,jdbc,jsp,ejb;String students=zhangsan,lisi,wanger,mazi,zhanglong,zhaohu;Scanner sca=new Scanner(System.in);while(true)System.out.println(请输入命令(AVGCOU/AVGSTU/SORT/GET/EXIT):);String str=sca.next();if(str.equals(AVGCOU)System.out.println(请输入课程名称:);String cou=sca.next();avgCou(scores,courses,cou);else if(str.equals(AVGSTU)System.out.println(请输入学生姓名:);String stu=sca.next();avgStu(scores,students,stu);else if(str.equals(SORT)System.out.println(请输入课程名称或者SUM:);String cou=sca.next();sort(scores,courses,students,cou);else if(str.equals(GET)System.out.println(请输入学生姓名:);String stu=sca.next();System.out.println(请输入课程名称:);String cou=sca.next();get(scores,courses,students,stu,cou);else if(str.equals(EXIT)System.out.println(谢谢使用!);break;/main() end!/求某课程的平均分public static void avgCou(int scores, String courses, String cou)/1,在courses数组中搜索cou出现的下标,如果courses中不包含cou则输出错误信息,并返回。/2,根据上一步找到的下标去查找scores中该列,把该列上的所有数据累加求和。/3,将和值除以scores数组的行数得到平均值,并将课程名和平均值输出。int index=-1;for(int i=0;icourses.length;i+)if(coursesi.equalsIgnoreCase(cou)index=i;break;if(index=-1)System.out.println(课程名不存在,请重新输入:);return;double sum=0.0;for(int i=0;iscores.length;i+)sum+=scoresiindex;double avg=sum/scores.length;NumberFormat format = NumberFormat.getInstance();format.setMaximumFractionDigits(2);System.out.println(cou+课程的平均分是:+format.format(avg);/求某学生的平均分public static void avgStu(int scores,String students,String stu) /1,在students数组中搜索stu出现的下标,如果studnets中不包含stu则输出错误信息,并返回。/2,跟据上一步找到的下标去查找scores中该行,把该行上的所有数据累加求和。/3,将和值除以scores数组的列数得到平均值,并将学生名和平均值输出。int index=-1;for(int i=0;istudents.length;i+)if(studentsi.equalsIgnoreCase(stu)index=i;break;if(index=-1)System.out.println(没有这个学生,请重新输入!);return;double sum=0.0;for(int i=0;iscoresindex.length;i+)sum+=scoresindexi;double avg=sum/scoresindex.length;NumberFormat format = NumberFormat.getInstance();format.setMaximumFractionDigits(2);System.out.println(stu+学生的平均分是:+format.format(avg);/求某个学生总分的排序;求某个课程成绩的排序。public static void sort(int scores, String courses, String students, String cou)/1,创建一个一维int数组,保存cou课程的成绩/2,创建一个一维String数组,保存所有学生的姓名。/3,对int数组排序,并且同时也同步移动String数组的顺序。/4,输出学生名和分数int cous=new intscores.length;if(cou.equalsIgnoreCase(sum)/如果要求总分的排序for(int i=0;iscores.length;i+)/求每个学生的总成绩int sum=0;for(int j=0;jscoresi.length;j+)sum+=scoresij;cousi=sum;else/如果要求某一门课程的排序int index=-1;for(int i=0;icourses.length;i+)if(coursesi.equalsIgnoreCase(cou)index=i;break;if(index=-1)System.out.println(课程名不存在,请重新输入:);return;for(int i=0;iscores.length;i+)cousi=scoresiindex;String stus=new Stringstudents.length;System.arraycopy(students, 0, stus, 0, students.length);for(int i=0;icous.length-1;i+)for(int j=i+1;jcous.length;j+)if(cousicousj)int temp=cousi;cousi=cousj;cousj=temp;String stemp=stusi;stusi=stusj;stusj=stemp;int grand=1;for(int i=0;i0 & cousi != cousi-1)grand=i+1;System.out.println(第+grand+名:+stusi+:+cousi);/统计某学员的总分,以及某个课程的成绩。public static void get(int scores, String courses,String students, S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论