import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; //定義一個JFrame窗體作為顯示載體 public class TestTortoiseRabbit extends JFrame { private static final long serialVersionUID = 987654321L; static final int MAX_LENGTH = 700; private JButton begin = new JButton("開始"); private JButton exit = new JButton("退出"); private Rabbit rabbit = new Rabbit("兔子"); private Tortoise tortoise = new Tortoise("烏龜"); private JLabel stateOfRabbit = new JLabel(); private JLabel winner; public TestTortoiseRabbit() { super("龜兔賽跑"); setLayout(null); setBounds(200, 150, 800, 400); setDefaultCloseOperation(EXIT_ON_CLOSE); add(rabbit); rabbit.setBounds(20, 100, 50, 20); add(tortoise); tortoise.setBounds(20, 150, 50 ,20); add(stateOfRabbit); stateOfRabbit.setBounds(300, 50, 100 ,20); add(begin);begin.setBounds(20, 200, 80, 30); add(exit);exit.setBounds(100, 200, 80, 30); setVisible(true); begin.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { new Thread(rabbit).start(); new Thread(tortoise).start(); begin.setVisible(false); stateOfRabbit.setText("兔子跑起來了!"); } }); exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); } public static void main(String[] args) { new TestTortoiseRabbit(); } class Tortoise extends JLabel implements Runnable { private static final long serialVersionUID = 12345678L; public Tortoise(String name) { super(name); } public Tortoise(Icon icon) { super(icon); } boolean stop; int speed = 2; int x, y; public void run() { x = getLocation().x; y = getLocation().y; while (!stop) { x += speed; setLocation(x, y); try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } if (x = MAX_LENGTH) { if (TestTortoiseRabbit.this.winner == null) { TestTortoiseRabbit.this.winner = this; } else { JOptionPane.showMessageDialog(TestTortoiseRabbit.this, TestTortoiseRabbit.this.winner.getText()+ "勝利!"); } stop = true; } } } } class Rabbit extends JLabel implements Runnable { private static final long serialVersionUID = 123456789L; public Rabbit(String name) { super(name); } public Rabbit(Icon icon) { super(icon); } boolean stop; int speed = 5; int x, y; Random r = new Random(); public void run() { x = getLocation().x; y = getLocation().y; while (!stop) { x += speed; setLocation(x, y); try { Thread.sleep(50); if(r.nextInt(100) 90){ if(speed == 0){ speed = 3; stateOfRabbit.setText("兔子跑起來了!"); }else{ speed = 0; stateOfRabbit.setText("兔子在睡覺!"); } } } catch (InterruptedException e) { e.printStackTrace(); } if (x = MAX_LENGTH) { stateOfRabbit.setText("兔子到終點(diǎn)了!"); if (TestTortoiseRabbit.this.winner == null) { TestTortoiseRabbit.this.winner = this; } else { JOptionPane.showMessageDialog(TestTortoiseRabbit.this, TestTortoiseRabbit.this.winner.getText()+ "勝利!"); } stop = true; } } } } }
為襄州等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及襄州網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、襄州網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
LZ題目給的不是很準(zhǔn)確。。跑道是否為環(huán)形跑道?
要用JAVA 寫出來,首先就要去分析這道數(shù)學(xué)題中的邏輯問題
1:若為直線跑道,要有相遇 必然是烏龜在前,兔子在后。。定義為追擊問題。。
求出速度差 v = 20 -10 = 10
追擊路程為 s = 1000
可以得出相遇時間,也就是兔子追上烏龜?shù)臅r間為 t = 1000/10 = 100(單位題目沒有給出。分析應(yīng)該是min 分鐘)
2:若為環(huán)形跑道
一圈是多少米,題目沒有給出。。故無法算出
分析完數(shù)學(xué)邏輯,再來寫程序代碼
public class Test9 {
public static void main(String[] args) {
//定義烏龜速度
int v1 = 10;
//定義兔子速度
int v2 = 20;
//定義整個路程
int sum = 1000;
//求出時間
double t = sum/(v2-v1);
System.out.println(t);
}
}
龜圖)Logo語言是年輕的計(jì)算機(jī)用戶所熟悉的種語言,龜圖是這種種語言的一個著名應(yīng)用。想像一只機(jī)器海龜在Java程序的控制下在房間內(nèi)移動。海龜有一支畫筆,可以處在兩種位置,筆頭朝上或朝下。當(dāng)畫筆朝下時,海龜畫出其運(yùn)動的軌跡;當(dāng)畫筆朝上時,海龜自由移動,不會寫下任何內(nèi)容。請模擬海龜?shù)牟僮鞑?chuàng)建一個計(jì)算機(jī)化的圖板。使用一個20*20的數(shù)組floor,并將其初始化為0。從一個包含命令的數(shù)組中讀取命令,始終跟蹤海龜?shù)漠?dāng)前位置以及畫筆的朝向。假定海龜總是從位置(0,0)開始移動,并且畫筆朝上。程序中必須處理的海龜命令如下:
命令 含義
1 畫筆朝上
2 畫筆朝下
3 右轉(zhuǎn)
4 左轉(zhuǎn)
5,10 向前走10步(或不為10的步數(shù))
6 打印20*20的數(shù)組
9 數(shù)據(jù)結(jié)束(循環(huán)結(jié)束標(biāo)志)
假如海龜在圖板中心附近的某個位置上,下面的“程序”將在畫筆朝上時畫出一個12*12的正方形。
2
5,12
3
5,12
3
5,12
3
5,12
5,12
1
6
9
當(dāng)海龜在運(yùn)動的畫筆朝下,將數(shù)組floor的相應(yīng)元素置為1。當(dāng)給出6號命令(打?。r,若某數(shù)組元素為1,則顯示一個星號,或者顯示其它字符;若某數(shù)組元素為0,就顯示一個空格。編寫一個程序,實(shí)現(xiàn)龜圖功能。編寫幾個龜圖程序,畫出有趣的圖形,并增加它命令,使龜圖語言的功能更強(qiáng)大。
設(shè)置2個動態(tài)圖片在寫個方法
public void run() {
while (true) {
try {
Thread.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
repaint();
}
jose 不動 ,maria forward(40) turn(-90)
這是java 中的方法傳參問題 ,在java中參數(shù)類型是引用類型,傳的是這個引用參數(shù)的引用的副本,在dosth()中,這個引用turtle指向了maria的地址,改變的都是maria值
import java.util.Date;
public class Test extends Thread{ private int tortoise_walk = 0; // 烏龜已跑長度存放變量
private int rabbit_walk = 0; // 兔子已跑長度存放變量
private int finish = 1000; // 終點(diǎn)
private volatile boolean hasWinner = false;// 勝利者誕生 /**
*
* @ClassName: Tortoise_Run
* @Description: TODO(烏龜奔跑線程)
* @author guotingchao
* @date 2012-3-6 上午10:20:45
*
*/
class Tortoise_Run implements Runnable {
@Override
public void run() {
try {
while (!hasWinner) {
if (tortoise_walk % 100 == 0 (tortoise_walk != 0||tortoise_walk=finish)) { //烏龜每100米休息500毫秒
System.out.println("烏龜休息中………………");
Thread.sleep(500);
}
tortoise_walk++;
System.out.println("烏龜已跑"+tortoise_walk+"米");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} /**
*
* @ClassName: Rabbit_Run
* @Description: TODO(兔子奔跑線程)
* @date 2012-3-6 上午10:25:10
* @author guotingchao
*/
class Rabbit_Run implements Runnable {
@Override
public void run() {
try {
while (!hasWinner) {
if (rabbit_walk % 20 == 0 (rabbit_walk != 0||rabbit_walk=finish)) { //兔子每20米休息500毫秒
System.out.println("兔子休息中………………");
Thread.sleep(500);
}
rabbit_walk=rabbit_walk+5; //每秒跑5步
System.out.println("兔子已跑"+rabbit_walk+"米");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void run(){
new Thread(new Rabbit_Run()).start();
new Thread(new Tortoise_Run()).start();
}
/**
* @Title: main
* @Description: TODO(
* 賽程1000米,兔子跑5米,烏龜跑1米,兔子每20米休息500毫秒,烏龜每100米休息500毫秒。誰先到終點(diǎn)就結(jié)束程序
* ,并顯示獲勝方。)
* @param @param args
* @param @throws Exception 設(shè)定文件
* @author guotingchao
* @return void 返回類型
* @throws
*/
public static void main(String[] args) throws Exception {
long temp_actionTime=System.currentTimeMillis();
System.out.println("比賽開始:"+new Date(temp_actionTime)+"毫秒");
Test t=new Test();
new Thread(t).start();
while(true){
if(t.tortoise_walk=t.finish||t.rabbit_walk=t.finish){
t.hasWinner=true;
break;
}
}
String winnnerName=t.tortoise_walkt.rabbit_walk?"烏龜":"兔子";
long temp_lastTime=System.currentTimeMillis();
System.out.println(winnnerName+"勝利");
System.out.println("比賽結(jié)束:"+new Date(temp_lastTime)+"毫秒");
System.out.println("所耗時間:"+(temp_lastTime-temp_actionTime)+"毫秒");
System.out.println("兔子="+t.rabbit_walk+" 烏龜="+t.tortoise_walk);
}
}
//不知道兔子和烏龜?shù)牟介L時間是否按每秒。 這里程序只考慮依次遞增頻率