2013-10-07 87 views
0

在我的节目,我有三个变量:当这些变量中的一个达到100,它必须出现的单词“变量先到了终点。”增加3个变量

如何组织的第二和第三个变量的到来,让他们出来是这样的:

variable1-arrived first 
variable2-finished second 
variable3 finished third 

帮助!

public Corsa(String name) 
{ 
    this.name = name; 
    System.out.println("Start: " + name); 
    System.out.println("---------------"); 
} 

public void run() 
{ 
    while(finita == false) 
    { 
     try 
     { 
      avanza = (int) (Math.random()*20+1); 
      percorso = percorso + avanza; 
      System.out.println(name + " has path " + percorso + " meters"); 
      if(percorso < 100) 
      { 
       System.out.println("---------------"); 
       sleep = (int) (Math.random()*20+1); 
       Thread.sleep(sleep); 
      } 
      else 
      { 
       System.out.println("---------------"); 
       System.out.println("---------------"); 
       System.out.println(name + " came in first"); 
       finita = true; 
      } 
     } 
     catch(InterruptedException e){} 
     Thread.yield(); 
    } 
} 

}

+1

这是一门功课? – nio

+2

'INT计数器= 0'是你的朋友:) –

+2

请用英文写你的代码,它是比较容易理解的人不知道自己的语言(意大利语?西班牙语?) –

回答

1

我没有测试过这一点(所以它可能甚至不会编译),但是像下面应该工作:

public class myRace 
{ 
    private int distance = 100; 
    private float offset = 20; 
    public int runners[3]; 

    public void run() 
    { 
     // Set all runners to 0 
     for (int i = 0; i < runners.length; i++) 
      runners[i] = 0; 

     // Run the race and stop when at least 1 runner has reached the distance... 
     boolean finished = false; 
     while (!finished) 
     { 
      for (int i = 0; i < runners.length; i++) 
      { 
       runners[i] += (int)((Math.random() * offset) + 1); 
       if (runners[i] >= distance) finished = true; 
      } 
     } 
     // Race finished now sort the runners 
     TreeMap<String, int> ranking = new TreeMap<String, int>(); 
     for (int i = 0; i < runners.length; i++) 
     { 
      // A TreeMap is sorted on its key, not the value! 
      // The runners number is tagged on, just in case two runners have finished on the same distance. 
      String sortedKey = Integer.toString(runners[i]) + "." + Integer.toString(i); 
      ranking.put(sortedKey, i); 
     } 
     // Print the results 
     int pos = 1; 
     for (Map.Entry entry : ranking.entrySet()) 
     { 
      String key = entry.getKey(); 
      String distance = key.subString(0, key.indexOf(".")); // chop off the "." + runners number. 

      System.out.println("#" + pos + // position 
       "." + entry.getValue() +  // who 
       ", Distance = " + distance); // distance covered 

      pos++; // this does take in account whether multiple runners finished on the same distance. 
     } 
    } 
}