修改一个Java程序

Python015

修改一个Java程序,第1张

这个必须要用线程的同步才可以做,打印星星不能再无条件的打印了

import java.util.concurrent.Phaser

public class StarPhaserDemo {

    public static void main(String args[]) {

     NewlinePhaser phsr = new NewlinePhaser(4,4)

        new StarThread(phsr)

        new StarThread(phsr)

        new StarThread(phsr)

        new StarThread(phsr)

    }

}

class NewlinePhaser extends Phaser {

private static int firstLineStartNum=4

int numPhases

int starNum=0

public NewlinePhaser(int numParties, int phases) {

super(numParties)

numPhases = phases

this.starNum=firstLineStartNum

}

public boolean onAdvance(int phase, int numParties) {

System.out.println() // print a newline

this.starNum=firstLineStartNum-phase-1

return phase == numPhases - 1 // stop after numPhases

}

public synchronized boolean canPrintStart(){

this.starNum--

return this.starNum>=0

}

}

class StarThread implements Runnable {

NewlinePhaser phsr

StarThread(NewlinePhaser p) {

phsr = p

new Thread(this).start()

}

public void run() {

while (!phsr.isTerminated()) {

if(phsr.canPrintStart()){

System.out.print('*')

}

phsr.arriveAndAwaitAdvance()

}

}

}

修改成Java后的代码:

public class Demo {

    public static int gcd(int a, int b, int c) {

        int min, i

        if(a > b) {

            if(b > c) {

                min = c

            } else {

                min = b

            }

        } else {

            if(a > c) {

                min = c

            } else {

                min = a

            }

        }

        if(b > c) {

            if(c > a) {

                min = a

            } else {

                min = c

            }

        } else {

            if(b > a) {

                min = a

            } else {

                min = b

            }

        }

        if(a > c) {

            if(c > b) {

                min = b

            } else {

                min = c

            }

        } else {

            if(a > b) {

                min = b

            } else {

                min = a

            }

        }

        for(i=min i>=1 i--) {

            if(a%i==0 && b%i==0 && c%i==0) {

                break

            }

        }

        return i

    }

    public static void main(String[] args) {

        int a = 1, b = 0, c = 0, i, k = 0, j = 0, m = 0, n = 0, z, y

        while(a < 9) {

            b = 1

            while(b < 9) {

                c = 1

                while(c < 9) {

                    if(gcd(a,b,c) == 1) {

                        System.out.println(a + "" + b + "" + c)

                        k++

                        z = b*b - 4*a*c

                        if(z == 0) {

                            j++

                        } else if(z > 0) {

                            m++

                            for (y=1 y<z/2 y++) {

                                if (y*y==z) {

                                    System.out.println("解答是有理数。")

                                }

                            }

                        } else {

                            n++

                        }

                    }

                    c++

                }

                b++

            }

            a++

        }

        System.out.println("N = " + k)

        System.out.println("N2 = " + j)

        System.out.println("N3 = " + m)

        System.out.println("N4 = " + n)

        i = gcd(a, b, c)

    }

}

我的电脑点右键,选择“属性”,选择“高级”标签,进入环境变量设置,分别设置如下三个环境变量:设置JAVA_HOME:一是为了方便引用,比如,JDK安装在C:\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径, 那么以后要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串二则是归一原则, 当JDK路径改变的时候, 仅需更改JAVA_HOME的变量值即可, 否则,就要更改任何用绝对路径引用JDK目录的文档, 要是万一没有改全, 某个程序找不到JDK, 后果是可想而知的----系统崩溃!三则是第三方软件会引用约定好的JAVA_HOME变量, 不然, 你不能正常使用该软件.在系统环境变量那一栏中点->新建JAVA_HOME (JAVA_HOME指向的是JDK的安装路径)变量名: JAVA_HOME变量值: C:\jdk1.6.0 (1)设置好path变量,使得我们能够在系统中的任何地方运行java应用程序,比如javac、java、javah等等,这就要找到我们安装JDK的目录,假设我们的JDK安装在C:\jdk1.6.0目录下,那么在C: \jdk1.6.0\bin目录下就是我们常用的java应用程序,我们就需要把C:\jdk1.6.0\bin这个目录加到path环境变量里面。在系统变量里找到path变量,选择->编辑;(里面已经有很多的变量值,是在变量值的最前面加上C:\jdk1.6.0\bin如果没有 就新建一个 但是 一般都会有的)变量名: path变量值: C:\jdk1.6.0\bin或 %JAVA_HOME%\bin(2)classpath环境变量,是当我们在开发java程序时需要引用别人写好的类时,要让java解释器知道到哪里去找这个类。通常,sun为我们提供了一些额外的丰富的类包,一个是dt.jar,一个是tools.jar,这两个jar包都位于C:\jdk1.6.0\lib目录下,所以通常我们都会把这两个jar包加到我们的classpath环境变量中set classpath=.C:\jdk1.6.0\lib\tools.jarC:\jdk1.6.0\lib\dt.jar。在系统环境变量那一栏中点->新建classpath变量名: classpath变量值: .C:\jdk1.6.0\lib\tools.jarC:\jdk1.6.0\lib\dt.jar或 .%JAVA_HOME%\lib\tools.jar%JAVA_HOME%\lib\dt.jar(注意,CLASSPATH 中最前面是有个 “.”的,表示当前目录,这样当我们运行java AClass的时候,系统就会先在当前目录寻找AClass文件了。)