Java小练习及答案Word文档格式.docx
- 文档编号:16725195
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:26
- 大小:23.76KB
Java小练习及答案Word文档格式.docx
《Java小练习及答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《Java小练习及答案Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
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<
board.length;
i++){
for(intj=0;
j<
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<
input.length();
index++){
if(input.length()<
=1||!
Character.isLetter(input.charAt(index))){
System.out.println("
输入有误,请重新输入!
continuetarget;
}
//判断输入的下标是否越界
if(input.charAt(0)>
N+'
a'
||input.charAt
(1)>
){
continue;
//計算和输出下棋的坐标位置
intx=input.charAt(0)-'
inty=input.charAt
(1)-'
//System.out.println("
坐标:
+x+"
"
+y);
//判断输入的下标位置上是否已经有棋子
if(board[x][y]=='
@'
||board[x][y]=='
O'
){//该位置是否已经有棋子了
该位置已经有棋子,请重新指定坐标!
//下棋
board[x][y]=isBlack?
//输出棋盘
printBoard(board);
//判断输赢情况
if(isWin(board,isBlack,x,y)){
System.out.println((isBlack?
"
黑"
白"
方获胜!
//黑白方交换
isBlack=!
isBlack;
}
privatestaticvoidprintBoard(char[][]board){
//输出星形的内容
i++){//输出每一行的内容
System.out.print((char)('
+i)+"
\t"
//输出行坐标(左边的字母)
j++){//输出该行的内容
System.out.print(board[i][j]+"
System.out.println();
//输出换行符
//输出第最后一行的内容
System.out.print("
//输出第一行开头的空格
i++){//输出第一行的所有字母
System.out.println();
*判断胜负
*@paramboard表示棋盘
*@paramisBlack表示刚下棋的一方
*@paramx表示横坐标
*@paramy表示纵坐标
*@return返回代表刚下棋的一方是否获胜
privatestaticbooleanisWin(char[][]board,booleanisBlack,intx,inty){
//代表和下棋方对应的棋子
charchess=isBlack?
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<
board[0].length&
count++;
if(count==5){
returntrue;
y++;
returnfalse;
//判断垂直方向上的胜负情况
privatestaticbooleanisChuizhiWin(char[][]board,charchess,intx,inty){
//1,循环找到上边界(白子的边界)
while(x>
x--;
垂直方向处理"
//2,判断边界情况时,最边界的棋子为何种颜色
//3,向下循环统计有多少个连续的同颜色棋子
x++;
while(x<
board.length&
x++;
//判断左斜方向上的胜负情况
privatestaticbooleanisZuoXieWin(char[][]board,charchess,intx,inty){
//1,循环找到左上边界
//情况:
如果第一个就下最左上角的位置上,该循环不被执行。
x>
左斜方向处理"
//3,向右下循环统计有多少个连续的同颜色棋子
y<
//判断右斜方向上的胜负情况
publicstaticbooleanisYouXieWin(char[][]board,charchess,intx,inty){
//1,循环找到右上边界
board[x][y]==chess){
右斜方向处理"
/**
*2,判断边界情况时,最边界的棋子为何种颜色
*判断条件(y<
board[0].length)的特别解释:
*在上面的while循环中最后一个次循环结束的时候y值可能已经等于board[0].length的长度了。
*/
if(y<
//3,向左下循环统计有多少个连续的同颜色棋子
y--;
y>
=0&
}
答案2:
作业提交时间及方法
作业题目
★★★★
1、从键盘输入十个整数,升序输出;
2、用二维字符数组保存一首唐诗(五言或七言),每一行代表一句,要求将这首唐诗按照古文的方式输出出来
(从右至左,竖行排列)。
。
3、九宫格;
4、用数组实现约瑟夫出圈问题。
n个人排成一圈,从第一个人开始报数,从1开始报,报到m的人出圈,剩下的
人继续开始从1报数,直到所有的人都出圈为止。
对于给定的n,m,求出所有人的出圈顺序。
5、将所有学生的课程成绩保留在一个二维数组中,每一行代表一个学生的成绩,每一列代表一门课程的成绩;
将每门课程的名称保留在一个一维数组中(课程的下标序号与二维数组的列号匹配);
将每个学生的姓名保留在一个一维数组中(学生的下标序号与二维数组的行号匹配);
要求编写程序实现成绩的查询,要求程序运行时从命令行输入统计命令及参数,程序则输出结果,
例如:
AVGCOUcorejava:
统计课程corejava的平均分。
AVGSTU张三:
统计学生张三的平均分。
SORTsum:
列出每个学生所有课程总分的排名。
SORTcorejava:
列出corejava课程的成绩的排名。
GET张三sum:
统计学生张三的总分。
GET张三corejava:
统计张三的corejava课程的成绩。
publicclassSort{
intlength=10;
int[]arr=newint[length];
请输入10个整数:
length;
arr[i]=Integer.parseInt(in.next());
//升序排序
arr.length;
i++)
j++)
if(arr[i]<
arr[j]){
inttemp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
System.out.print(arr[i]+"
9876543210
0123456789
publicclassgusi01{
char[][]a={
{'
朝'
'
辞'
帝'
彩'
云'
间'
},
千'
里'
江'
陵'
一'
日'
还'
两'
岸'
猿'
声'
啼'
不'
住'
轻'
舟'
已'
过'
万'
重'
山'
}};
//方法一:
for(inti=0;
i<
a[0].length;
i++){//控制输出结果的行
for(intj=0;
j<
a.length;
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:
publicclassTest{
请输入一个奇数:
//为数组赋初始值
intdata[][]=newint[N][N];
N;
data[i][j]=0;
printArray(data);
//计算第一个元素存放的位置
introw=0;
//声明行变量
intcol=N/2;
//声明列变量
for(inti=1;
=N*N;
data["
+row+"
]["
+col+"
]="
+i);
data[row][col]=i;
//始终保证是右上角的位置;
row--;
col++;
//行越界,列不越界;
if(row<
col<
N){
row=N-1;
//col不变;
//列越界,行不越界
if(row>
col==N){
col=0;
//row不变;
}
//最右上角||右上角有值;
if((row<
col>
=N)||(data[row][col]!
=0)){
row+=2;
col--;
privatestaticvoidprintArray(int[][]data){
data.length;
System.out.print((data[i][j]<
10?
0"
+data[i][j]:
data[i][j])+"
3
080106
030507
040902
5
1724010815
2305071416
0406132022
1012192103
1118250209
答案4:
publicclassOut{
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 练习 答案