小JAVA大世界之程序建模跳蚤实验
package com.chigoe;
//房子类
class House {
private int m;// 保存行数
private int n;// 保存列数
private int[][] a;
public House() { // 无参构造方法
m = 10;
n = 10;
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++) {
a[i][j] = 0;
}
}
public House(int m,int n){//带参构造方法
this.m=n;this.n=n;
a=new int[m][n];
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++) {
a[i][j] = 0;
}
}
public int getM() {
return m;
}
public int getN() {
return n;
}
public int[][] getA() {
return a;
}
public int getElment(int i,int j){
return a[i][j];
}
public void setElment(int i,int j,int v){
a[i][j]=v;
}
//判断跳蚤是否经过了所以瓷砖
public boolean checkZero(){
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++) {
if(a[i][j]==0){
return true;
}
}
return false;
}
//遍历数组
public void display(){
for (int i = 0; i < m; i++){
for (int j = 0; j < n; j++){
System.out.print(" "+a[i][j]+" ");
}
System.out.println();//满足一行瓷砖就换行
}
}
}
//跳蚤类
public class Tiaozao {
private static final int UP=0;
private static final int DOWN=1;
private static final int RIGHT=2;
private static final int LEFT=3;
private int x,y;
private int totals;//保存总的次数
private House ahouse;//表示此类的成员变量是自己本身,也就是自己的一个对象。
public Tiaozao(House h){
ahouse=h;
totals=0;
x=(int)(Math.random()*ahouse.getM());//应该是随机生成跳蚤的初始位置
y=(int)(Math.random()*ahouse.getN());
}
public int getTotals(){
return totals;
}
public boolean walk(int direction){
System.out.println("x="+x+",y="+y+"direction="+direction);
switch(direction){
case UP:if(y==0) return false;
else{
ahouse.setElment(x, y, ahouse.getElment(x, y)+1);
y=y-1;
return true;
}
case DOWN:if(y==ahouse.getN()-1) return false;
else{
ahouse.setElment(x, y, ahouse.getElment(x, y)+1);
y=y+1;
return true;
}
case LEFT:if(x==0) return false;
else{
ahouse.setElment(x, y, ahouse.getElment(x, y)+1);
x=x-1;
return true;
}
case RIGHT:if(x==ahouse.getM()-1) return false;
else{
ahouse.setElment(x, y, ahouse.getElment(x, y)+1);
x=x+1;
return true;
}
default:
System.out.println("非法移动");
return true;
}
}
public void move(){
int nexdirection;
boolean success;
do{
nexdirection=(int) (Math.random()*4);
success=walk(nexdirection);
if(success){
totals++;
}
}while(ahouse.checkZero());
}
public static void main(String[] args) {
House ahouse=new House(4,4);
Tiaozao atiaozao=new Tiaozao(ahouse);//将对象作为参数,引用数据传递
atiaozao.move();
ahouse.display();
System.out.println("totals ="+atiaozao.getTotals());
}
}
小JAVA大世界之程序建模跳蚤实验的更多相关文章
- 小JAVA大世界之万年历
import java.util.Scanner; public class Calendar { public static void main(String[] args) { // 万年历 in ...
- 20145223《Java程序程序设计》实验报告5
20145223杨梦云<Java网络编程> 一.实验内容 ·1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: ·2.利用加解密代码包,编译运行代码,一人加密,一人解密: ·3. ...
- 20145227《Java程序设计》第2次实验报告
20145227<Java程序设计>第2次实验报告 实验步骤与内容 一.实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 ...
- 20162330 实验一 《Java开发环境的熟悉》 实验报告
2016-2017-2 实验报告目录: 1 2 3 4 5 20162330 实验一 <Java开发环境的熟悉> 实验报告 课程名称:<程序设计与数据结构> 学生班级:1623 ...
- 2018-2019-2 20175306实验二面向对象程序设计《Java开发环境的熟悉》实验报告
2018-2019-2 20175306实验二面向对象程序设计<Java开发环境的熟悉>实验报告 面向对象程序设计-1 实验要求: 参考:> http://www.cnblogs.c ...
- 2018-2019-2 20175209 实验一《Java开发环境的熟悉》实验报告
2018-2019-2 20175209 实验一<Java开发环境的熟悉>实验报告 一.实验内容及步骤 1.使用JDK编译.运行简单的Java程序 cd 20175209进入2017520 ...
- 2018-2019-2-20175303 实验一 《Java开发环境的熟悉》实验报告
2018-2019-2-20175303 实验一 <Java开发环境的熟悉>实验报告 一.实验内容及步骤 实验1 1.用mkdir建立“20175303exp1”的目录 2.在“20175 ...
- 2018-2019-20175205实验二面向对象程序设计《Java开发环境的熟悉》实验报告
2018-2019-20175205实验二面向对象程序设计<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>< ...
- Java技术开发程序员如果在2019年立足
2019年的互联网环境相对以往来说要更复杂一些,互联网领域也正在经历从消费互联网向产业互联网转型的阵痛期.其实不少公司从2018年开始已经在陆续进行结构化调整,这些调整中的重要内容就是岗位调整,而岗位 ...
随机推荐
- (转)关于Oracle AUTONOMOUS TRANSACTION(自治事务)的介绍
AUTONOMOUS TRANSACTION(自治事务)的介绍 在基于低版本的ORACLE做一些项目的过程中,有时会遇到一些头疼的问题,比如想在执行当前一个由多个DML组成的transaction(事 ...
- Modelica学习
Annotation Choices for Suggested Redeclarations and Modifications Replaceable model sample(start,int ...
- TextView实现歌词同步
利用TextView实现歌词同步显示,这是一个简单的利用TextView实现滚动实时显示歌词的. 里面的内容都已经写上了详细的注释.里面播放音乐的时候歌词同步展示. 做媒体这块的朋友可以学习一下,练练 ...
- 三张图片详解Asp.Net 全生命周期
用三张图片详解Asp.Net 全生命周期 下面我们使用三张图片解析ASP.net的整个生命周期,我总感觉使用图片更加的清楚的说明这种问题,所以使用的这样方式 说明: 1 第一张图片从全局说明从客户端 ...
- 简单的block
int multi = 7; int (^myBlock)(int) = ^(int num){ return num * multi; ...
- Math Start!
(1)Add Digits 解题思路: 基于同余的数学属性. 数字的根(即题目所要求返回的最终结果)与该数字除以9时的余数相同(并且该余数将始终为单个数字). take 438 as an examp ...
- Minecraft 插件 world edit 的cs 命令
现在 jar包 http://www.mozilla.org/rhino ,放到classpath 我是放到libs目录中, 1.8 spi 服 @ECHO OFFjava -cp ".;. ...
- myeclipse 控制台打印空指针 ,黏贴控制台sql到plsql有结果集,异常处理
信用公司框架,不够熟悉. 在完成嗲点登录后,写动态页面是遇到,了问题:myeclipse 控制台打印空指针 ,黏贴控制台sql到plsql有结果集,异常处理. 最后大神给看,在接口实现重写的方法里返回 ...
- WdatePicker日期控件的用法
前台 <td height="25" width="*" align="left"> <asp:TextBox ID=&q ...
- Python:进程
由于GIL的存在,python一个进程同时只能执行一个线程.因此在python开发时,计算密集型的程序常用多进程,IO密集型的使用多线程 1.多进程创建: #创建方法1:将要执行的方法作为参数传给Pr ...