A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//第一个帖子:http://bbs.itheima.com/thread-192515-1-1.html
//第二个帖子:http://bbs.itheima.com/thread-192519-1-1.html
//今天学了面向对象,想把我的思路用面向对象表达出来,不知道有没有准确
//只写了Road类,>_<
//希望有面向对象的大牛指导我下
/**实现螺旋矩阵--------实现过程
*思路:1.将螺旋矩阵分成了4种情况  首先是往右走,然后是往下走,然后是往左走,然后是往上走,然后再往右走。。。。。
*      2.往右走:首先往右走,如果发现右边这样走是错的【超出数组界限或者右边已经有数了】,就退回,走对了就标记下【给标记数组赋值,同时记录坐标】
*                 然后要往下走,如果发现下边是不可以走的【超出数组界限或者下边已经有数了】,就不走了
*    3.往下走:首先往下走,如果发现下边这样走是错的【超出数组界限或者下边已经有数了】,就退回,走对了就标记下【给标记数组赋值,同时记录坐标】
*                 然后要往左走,如果发现左边是不可以走的【超出数组界限或者左边已经有数了】,就不走了
*    4.往左走:首先往左走,如果发现左边这样走是错的【超出数组界限或者左边已经有数了】,就退回,走对了就标记下【给标记数组赋值,同时记录坐标】
*                 然后要往上走,如果发现上边是不可以走的【超出数组界限或者上边已经有数了】,就不走了
*    5.往上走:首先往上走,如果发现上边这样走是错的【超出数组界限或者上边已经有数了】,就退回,走对了就标记下【给标记数组赋值,同时记录坐标】
*                 然后要往右走,如果发现右边是不可以走的【超出数组界限或者右边已经有数了】,就不走了
*面向对象的思考: 对象有谁?走的人,路
*                人 Person 类:
                  成员变量:private int x;private int y;//所在的坐标
*      成员方法:走路 boolean run(Road road)//road 是路的实例    走成功返回true ,否则返回 false
*          做标记 boolean setSign(Road road)//给路做标记 成功返回true 失败返回false
     路 Road 类  :
      成员变量:private int [][] road;//未做标记的路 默认没走过【0表示未走过】
         private int length;//路的长度
         private int wide;//路的宽度
      构造方法:Road(int length,int wide) {
         this.length=length;
         this.wide=wide;
         road=new int[length][wide];
          }
      成员方法:public boolean isRunding(int x,int y){}//该路是否有做标记,可以走返回true ,不可以走返回flase
         public void  show()//展示路的所有坐标
        再定义一个螺旋矩阵的规则类 :ScrewMatrixRegular
        private int direction;//默认走的方向为右 【定义枚举类型更合适,可惜我枚举还没去学】
               0-右  1下  2左  3 上
           private int key;//螺旋矩阵该有的值
     成员方法: public boolean isRight(Road road,Person person) //是否可以往右走
           public boolean  isLeft(Road road,Person person)//是否可以往左走
        public boolean isUpper(Road road,Person person) //是否可以往上走
           public boolean  isBelow(Road road,Person person)//是否可以往下走
           public boolean toRight(Road road,Person person) //key++ 往右走的实现,走失败则返回flase,成功返回true         
           public boolean  toBelow(Road road,Person person)//key++   往下走的实现,走失败返回flase,成功返回true
        public boolean  toLeft(Road road,Person person)//key++    往左走的实现,走失败返回flase,成功返回true
        public boolean toUpper(Road road,Person person) //key++  往上走的实现,走失败返回flase,成功返回true
        public void changeDirection()//改变方向的规则
    定义逻辑实现类: ScrewMatrixRealize  
           public void show(Person person,Road road)//显示螺旋矩阵
         
*/

/**
* 路 Road 类  :
*      成员变量:private int [][] road;//未做标记的路 默认没走过【0表示未走过】
*         private int length;//路的长度
*         private int wide;//路的宽度
*      构造方法:Road(int length,int wide) {
*         this.length=length;
*         this.wide=wide;
*         road=new int[length][wide];
*          }
*
*      成员方法:public boolean isRunding(int x,int y){}//该路是否有做标记,可以走返回true ,不可以走返回flase
*            
*          public void  show()//展示路的所有坐标
*/
class Road {
/**
*未做标记的路 默认没走过【0表示未走过】
*/
    int [][]road;
/**
*路的长度 x
*/
    private int length;
/**
*获取length
*/
public int getLength() {
  return this.length;
}
/**
*路的宽度 y
*/
private int wide;
/**
*获取wide
*/
public int getWide() {
  return wide;
}
/**
*构造函数
*/
    public  Road(int length,int wide) {
   this.length=length;
   this.wide=wide;
   road=new int[length][wide];
}
/**
*该路是否有做标记,可以走返回true ,不可以走返回flase
*@param x 路的x坐标
*@param y 路的y坐标
*/
public boolean isRunding(int x,int y) {
   if(x<this.length&&y<this.wide) {
   if(road[x][y]!=0) return true;
   } else System.out.println("该路不存在("+x+","+y+")坐标!");
   return false;
}
/**
*展示路的所有坐标
*/
  public void  show() {
  for(int y=0;y<this.wide;y++) {
    for(int x=0;x<this.length;x++)
     System.out.println(road[x][y]+"\t");
    System.out.println();
  }
  }
}

评分

参与人数 4黑马币 +21 收起 理由
黄小橙 + 5 很给力!
lclxjzz + 5 很给力!
曹小不 + 6 赞一个!
kk8023 + 5 很给力!

查看全部评分

33 个回复

倒序浏览
我路过看看
回复 使用道具 举报
顶一个,小板凳前排入座!
回复 使用道具 举报
我是路过的
回复 使用道具 举报
逸风 来自手机 中级黑马 2015-4-29 21:33:30
报纸
技术贴!顶起
回复 使用道具 举报
人才!赞一下!
回复 使用道具 举报
Oh.Ba 中级黑马 2015-4-29 21:46:41
7#
路过。看不懂
回复 使用道具 举报
好得很,不过没学到呢
回复 使用道具 举报
黑影 中级黑马 2015-4-29 21:59:14
9#
研究中,前排学习
回复 使用道具 举报
rolan 中级黑马 2015-4-29 22:03:33
10#
顶。楼主棒棒哒
回复 使用道具 举报
gainn 中级黑马 2015-4-29 22:04:01
11#
技术贴,必须顶!0422要出大牛啊!
回复 使用道具 举报
exist 中级黑马 2015-4-29 22:04:07
12#
值得学习!
回复 使用道具 举报
顶楼主 ~
回复 使用道具 举报
牛逼,思路 很清晰
回复 使用道具 举报
路过 起码我现在还不会~
回复 使用道具 举报
猴赛雷,每次看到这么长的代码,就不是很有心情
回复 使用道具 举报
lzh2015 发表于 2015-4-29 22:09
猴赛雷,每次看到这么长的代码,就不是很有心情

写着写着就这么长了,其实也不是很长
回复 使用道具 举报
大神,求带飞、、
回复 使用道具 举报
502黄大神发帖,菜j前来顶贴!
回复 使用道具 举报
表示看懂有压力!真牛叉!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马