上面是題目
我用了兩個執行緒來算pi,
第一個是讓程式一直遞回計算pi,
第二個是用來監視輸入的文字,
如果輸入0以外的值則會在螢幕印出目前用遞回算出的數字,
輸入0則會終止計算,
程是裡面用到的是繼承Thread,
而繼承Thread必須要有一個run{}來運行執行緒。
程式碼↓
----
class a1105 extends Thread {
public static void main(String arg[]) {
a1105 pi = new a1105();
}
public a1105() {
Thread wating = new watinginput(this);
wating.start();
this.start();
}
public volatile String nnnnnn;
public double pi=1,i=1;
public void pi() {
pi =pi*i*2/(2*i-1)*i*2/(2*i+1);
i=i+1;
}
public void run() {
System.out.println("run,pi/2=(2/1)*(2/3)*(4/3)*(4/5)*(6/5)*(6/7)...");
while (true) {
this.pi();
}
}
public class watinginput extends Thread {
private a1105 wtf;
private java.util.Scanner input;
public watinginput(a1105 aaa) {
this.wtf = aaa;
input = new java.util.Scanner(System.in);
}
public void run() {
String nnnnnn = input.nextLine();
while (!nnnnnn.equals("0")) {
System.out.println("pi=" + pi*2+",i="+i);
nnnnnn = input.nextLine();
}
System.exit(0);
}
}
}
沒有留言:
張貼留言