当前位置: 代码迷 >> Java相关 >> 初来乍到,有问题求大神帮我
  详细解决方案

初来乍到,有问题求大神帮我

热度:232   发布时间:2013-02-15 19:26:01.0
初来乍到,有问题求大神帮我
初来乍到,遇到一个非常棘手的问题。关于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;
    }
}


麻烦大侠帮忙修改一下,谢谢了。
一定要可以执行阿……老师说交了就有分…………但是一定要能执行
搜索更多相关的解决方案: 百度知道  

----------------解决方案--------------------------------------------------------
没有实现多线程。
----------------解决方案--------------------------------------------------------