java学习心得1

来源:互联网 发布:ubuntu 17.10 qq 编辑:程序博客网 时间:2024/06/16 21:04

为了学习J2EE的技术,现在在恶补java se的东西,先从最基础的学起,教材选了李刚的那本《疯狂java讲义》

第一章是java语言概述,介绍了java语言的特点,java环境的搭建和一些java程序的基本原则。

第二章大概介绍了一下oop,这部分有uml语言介绍,我大略过了一遍,看不太懂(囧)。

第三章 数据类型和运算符,因为我有点c的基础,所以这章看的也很快。

第四章 流程控制和数组,这章讲的非常详细,把数组底层的存储通过图片介绍一下,但是我感觉还是似懂非懂的。

第四章的课后习题3.编写一个控制台的五子棋游戏

我花了半天时间写了一个,电脑的下法是随机的。

import java.io.*;public class Gobang {private String[][] board;private static int BOARD_SIZE=15;//棋盘初始化,大小设定为15private void initBoard(){board=new String[BOARD_SIZE][BOARD_SIZE];for(int i=0;i<BOARD_SIZE;i++){for(int j=0;j<BOARD_SIZE;j++){board[i][j]="╋";}}}//打印棋盘private void printBoard(){//for(int i=1;i<=BOARD_SIZE;i++)//System.out.print("一");//System.out.println();for(int i=0;i<BOARD_SIZE;i++){for(int j=0;j<BOARD_SIZE;j++){System.out.print(board[i][j]);}System.out.println();}}//判断xpos,ypos处的子是否连成5个,是则返回ture,否返回falsepublic boolean isWin(int xpos,int ypos,String chesstype){int sum=1;int i;int j;//横向判断i=xpos+1;while(i>0&&i<BOARD_SIZE&&i<=xpos+4){if(board[ypos-1][i-1]==chesstype)sum++;elsebreak;i++;}i=xpos-1;while(i>0&&i<BOARD_SIZE&&i>=xpos-4){if(board[ypos-1][i-1]==chesstype)sum++;elsebreak;i--;}if(sum==5)return true;sum=1;//竖向判断i=ypos+1;while(i>0&&i<BOARD_SIZE&&i<=ypos+4){if(board[i-1][xpos-1]==chesstype)sum++;elsebreak;i++;}i=ypos-1;while(i>0&&i<BOARD_SIZE&&i>=ypos-4){if(board[i-1][xpos-1]==chesstype)sum++;elsebreak;i--;}if(sum==5)return true;sum=1;//右斜判断i=xpos+1;j=ypos+1;while(i>0&&i<BOARD_SIZE&&i<=xpos+4&&j>0&&j<BOARD_SIZE&&j<=xpos+4){if(board[j-1][i-1]==chesstype)sum++;elsebreak;i++;j++;}i=xpos-1;j=ypos-1;while(i>0&&i<BOARD_SIZE&&i>=xpos-4&&j>0&&j<BOARD_SIZE&&j>=xpos-4){if(board[j-1][i-1]==chesstype)sum++;elsebreak;i--;j--;}if(sum==5)return true;sum=1;//左斜判断i=xpos-1;j=ypos+1;while(i>0&&i<BOARD_SIZE&&i>=xpos-4&&j>0&&j<BOARD_SIZE&&j<=xpos+4){if(board[j-1][i-1]==chesstype)sum++;elsebreak;i--;j++;}        i=xpos+1;j=ypos-1;while(i>0&&i<BOARD_SIZE&&i>=xpos-4&&j>0&&j<BOARD_SIZE&&j<=xpos+4){if(board[j-1][i-1]==chesstype)sum++;elsebreak;i++;j--;}if(sum==5)return true;return false;}public static void main(String[] args) throws Exception{Gobang gb=new Gobang();gb.initBoard();gb.printBoard();BufferedReader br=new BufferedReader(new InputStreamReader(System.in));String inputStr=null;System.out.println("请输入坐标(x,y):");while((inputStr=br.readLine())!=null){String[] posStrArr=inputStr.split(",");int xPos=Integer.parseInt(posStrArr[0]);int yPos=Integer.parseInt(posStrArr[1]);if(!(xPos>=0&&xPos<=BOARD_SIZE)||!(yPos>=0&&yPos<=BOARD_SIZE)){System.out.println("输入不合法,请重新输入坐标:");continue;}else if(gb.board[yPos-1][xPos-1]=="●"||gb.board[yPos-1][xPos-1]=="○"){System.out.println("不能重复下子,请重新输入坐标:");continue;}else{gb.board[yPos-1][xPos-1]="●";}int cxPos=(int)(Math.random()*BOARD_SIZE);int cyPos=(int)(Math.random()*BOARD_SIZE);//System.out.println(cxPos);//System.out.println(cyPos);while(gb.board[cyPos][cxPos]=="●"||gb.board[cyPos][cxPos]=="○"){ cxPos=(int)(Math.random()*BOARD_SIZE); cyPos=(int)(Math.random()*BOARD_SIZE);}gb.board[cyPos][cxPos]="○";gb.printBoard();if(gb.isWin(xPos,yPos,"●")){System.out.println("You Win!");break;}else if(gb.isWin(cxPos+1,cyPos+1,"○")){System.out.println("Computer Win!");break;}System.out.println("请输入坐标(x,y):");}}}





原创粉丝点击