| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 279 人关注过本帖
标题:初来乍到,有问题求大神帮我
只看楼主 加入收藏
casrbarachao
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-2-15
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
初来乍到,有问题求大神帮我
初来乍到,遇到一个非常棘手的问题。关于java,我基本等于完全不会的……我们是学了一学期的理论,从来没实践过,就最后给一个课题要求完成……
我们老师的题目是,在模拟十字交通口,然后四面有汽车经过,十字交通口中间是信号灯。信号灯会固定时间改变颜色,只有红绿两种。马路上从四个方向随机生成汽车,这个汽车会开向对面,到了信号灯的地方,如果是绿灯,这辆车就能够通过,如果红灯,就会停下,等变成绿灯之后再通过。

我根据老师上课的笔记写了下面这个……在百度知道上提问过……人家都说写的不敢恭维……
我知道自己写的很混乱……还请各位大神帮忙修改…………谢谢了……
import java.util.*;
public class Simcar extends Thread {
    static Car car;
    static long cTime = 0, eTime = 60;
    static int[] sign = new int[2];
    static int count = 0;


    public static void main(String argv[]){
     cTime = 0;
 long now = System.currentTimeMillis();


 while(cTime < eTime){
     MoveCar();
     cTime = System.currentTimeMillis();
     cTime = cTime - now;
 }
 System.out.println("Finish!!");
    }


    // 车的移动
    static void MoveCar(){
 double r;
 int i, j, k, l;
 int x = 1;  // 车与车的间距设定
 // 车的前进
 for ( i = 0; i < 3; i++) {
     for ( j = car.car.lenght-1; j >= 0; j--) {
  l = 0;
  if (car.car.road[i][j] == 1) {
      car.car.road[i][j] = 0;
      for (k = 0; k < car.speed; k++) { // 车间距判定
   if(car.car.road[i][j+k+x] == 1){
       count += 1;
       System.out.println("延迟回数:" +count);
       System.out.println("发生时间:" +cTime);


       break;
   }
      }
      if ( i+k >= car.car.lenght) {
   Sign();
   if ((sign[0]==0 && i == 0) || (sign[1]==0 && i == 1)) {
       r = Math.random();
       if (r >= 0 && r < 8) {
    l += 2;
       } else {
    if ( i == 0) {
        k = 3;
    } else if(i == 1) {
        k = -1;
    }
       }
       car.car.road[i+l][j+k-car.car.lenght] = 1;
   }
      } else {
   car.car.road[i][j+k] = 1;
      }
  }  else continue;
     }
 }
    }


    // 信号的处理
    static void Sign(){
 int time;
 time = (int)cTime % 10;
 if ( 0 >= time && time < 6) {
     sign[0] = 0;
     sign[1] = 1;
 } else {
     sign[0] = 1;
     sign[1] = 0;
 }
    }
}


// 街道的情况
class Road extends Simcar {
    int lenght = 500;
    int [][] road = new int [3][1000];
    private int i, j;


    for(i = 0; i < 3; i++) {
 for(j = 0; j < lenght; j++) {
     road[i][j] = 0;
 }
    }
}


// 车的生成
class Car extends Simcar {
    int speed = 50;
    Road car = new Road();
    double r;


  
    r = Math.random();
    if (r >= 0 && r < 3) {
 car.road[0][0] = 1;
    } else if (r >= 3 && r < 7) {
 car.road[1][0] = 1;
    } else {
     continue;
    }
}


麻烦大侠帮忙修改一下,谢谢了。
一定要可以执行阿……老师说交了就有分…………但是一定要能执行
搜索更多相关主题的帖子: 百度知道 
2013-02-15 19:26
ren829
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:15
帖 子:255
专家分:1174
注 册:2006-3-11
收藏
得分:20 
没有实现多线程。
2013-02-16 13:48
快速回复:初来乍到,有问题求大神帮我
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024893 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved