Java小练习及答案.docx

上传人:b****4 文档编号:3818945 上传时间:2022-11-25 格式:DOCX 页数:26 大小:23.76KB
下载 相关 举报
Java小练习及答案.docx_第1页
第1页 / 共26页
Java小练习及答案.docx_第2页
第2页 / 共26页
Java小练习及答案.docx_第3页
第3页 / 共26页
Java小练习及答案.docx_第4页
第4页 / 共26页
Java小练习及答案.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

Java小练习及答案.docx

《Java小练习及答案.docx》由会员分享,可在线阅读,更多相关《Java小练习及答案.docx(26页珍藏版)》请在冰豆网上搜索。

Java小练习及答案.docx

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=0&&board[x][y]==chess){

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={

{'朝','辞','白','帝','彩','云','间'},

{'千','里','江','陵','一','日','还'},

{'两','岸','猿','声','啼','不','住'},

{'轻','舟','已','过','万','重','山'}};

//方法一:

for(inti=0;i

for(intj=0;j

System.out.print(a[3-j][i]+"");//而打印的时候,打印的确是原有古诗二维数组的内容即原来的位置。

}

System.out.print("\n");

}

//方法二:

for(inti=0;i

for(intj=a.length-1;j>=0;j--)

System.out.print(a[j][i]+"");

System.out.println();

}

}

}

输出:

轻两千朝

舟岸里辞

已猿江白

过声陵帝

万啼一彩

重不日云

山住还间

答案3:

importjava.util.Scanner;

publicclassTest{

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

System.out.println("请输入一个奇数:

");

Scannerin=newScanner(System.in);

intN=in.nextInt();

//为数组赋初始值

intdata[][]=newint[N][N];

for(inti=0;i

for(intj=0;j

data[i][j]=0;

}

printArray(data);

//计算第一个元素存放的位置

introw=0;//声明行变量

intcol=N/2;//声明列变量

for(inti=1;i<=N*N;i++){

System.out.println("data["+row+"]["+col+"]="+i);

data[row][col]=i;

//始终保证是右上角的位置;

row--;

col++;

//行越界,列不越界;

if(row<0&&col

row=N-1;//col不变;

}

//列越界,行不越界

if(row>=0&&col==N){

col=0;//row不变;

}

//最右上角||右上角有值;

if((row<0&&col>=N)||(data[row][col]!

=0)){

row+=2;

col--;

}

}

printArray(data);

}

privatestaticvoidprintArray(int[][]data){

//TODOAuto-generatedmethodstub

for(inti=0;i

for(intj=0;j

System.out.print((data[i][j]<10?

"0"+data[i][j]:

data[i][j])+"");

}

System.out.println();

}

}

}

请输入一个奇数:

3

080106

030507

040902

请输入一个奇数:

5

1724010815

2305071416

0406132022

1012192103

1118250209

答案4:

publicclassOut{

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

int[]arr=newint[]{1,2,3,4,5,6,7,8};

out(arr,8,3,0);

}

/**

*@paramarray:

表示一个存放数据的一维数组;

*@paramlength:

数组中元素的个数(共有多少人围成的圈);

*@paramtarget:

目标数(从1开始报,报到m的人出圈)

*@paramstart:

从数组中哪个元素开始的坐标(第一次时指定从哪一个人开始报数);

*注意:

数组起始下标从0开始。

*/

privatestaticvoidout(intarray[],intlength,inttarget,intstart){

if(length==0)

return;

intindex=(s

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1