小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年开始已经在陆续进行结构化调整,这些调整中的重要内容就是岗位调整,而岗位 ...
随机推荐
- Perl爬取江西失信执行
#! /usr/bin/perl use strict; use Encode qw(encode decode); binmode(STDIN,":encoding(utf8)" ...
- 【英语魔法俱乐部——读书笔记】 1 初级句型-简单句(Simple Sentences)
第一部分 1 初级句型-简单句(Simple Sentences):(1.1)基本句型&补语.(1.2)名词短语&冠词.(1.3)动词时态.(1.4)不定式短语.(1.5)动名词.(1 ...
- log4net 记录日志到sqlserver
参考:http://blog.csdn.net/niuyongjie/article/details/5777625 demo
- Python遍历目录下所有文件的最后一行进行判断若错误及时邮件报警-案例
遍历目录下所有文件的最后一行进行判断若错误及时邮件报警-案例: #-*- encoding: utf-8 -*- __author__ = 'liudong' import linecache,sys ...
- spring mvc 4.3.2 + mybatis 3.4.1 + mysql 5.7.14 +shiro 幼儿园收费系统 之 登录
如标题,用spring mvc 4.3.2+mybatis 3.4.1 + mysql 5.7.14 +shiro 开发了一个用于幼儿园的管理系统. 功能模块 包括 账号,角色,权限管理. 幼儿档案管 ...
- Redis(二) 扩展
事务multi ... exec 之间的操作先进入等待队列,到exec时一起执行 事物的所有操作结果都是一起返回的,所以前一条指令的结果无法作为后一条指令的参数 ...
- 解决:NoSuchAlgorithmException: Algorithm HmacSHA1 not available
windows下运行macInstance = Mac.getInstance("HmacSHA1");完全正常,Linux下则出现异常: java.security.NoSuch ...
- C#实现JSON序列化与反序列化
1.使用 JavaScriptSerializer类实现序列化 namespace: System.Web.Script.Serialization eg: // 序列化 private string ...
- swift 之 闭包
一.闭包 格式:{ ( 参数名:类型, 参数名:类型 .. ) in 内容体 return 返回值 } 最完整的闭包 1.省略参数类型 { ( 参数名, 参数名.. ) ...
- c语言插入排序
对于小规模输入,插入排序是一种非常快速的排序算法,且原理简单,结构紧凑. 插入排序的原理:从序列中第二个数A开始,将A,插入前面已经排好的序列中,形成一个新的排序好的序列,以此类推到最后一个元素. 参 ...