精华内容
下载资源
问答
  • 2021-03-11 16:34:59

    [分享]几段有趣的JAVA代码

    下面是一些有趣的JAVA代码,大家可以尝试下不要编译运行代码先猜一下代码的运行结果,然后再动手验证.

    主要考察JAVA的基本功,各位可以把自己作对的题号跟贴贴出来.

    建议第一页不要有讨论为什么的帖子,方便大家测试

    代码一public class LongDivision {

    public static void main(String[] args) {

    final long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000;

    final long MILLIS_PER_DAY = 24 * 60 * 60 * 1000;

    System.out.println(MICROS_PER_DAY / MILLIS_PER_DAY);

    }

    }

    代码二

    public class Multicast {

    public static void main(String[] args) {

    System.out.println((byte) -1);

    System.out.println((char) (byte) -1);

    System.out.println((int) (char) (byte) -1);

    }

    }

    代码三

    public class DosEquis{

    public static void main(String[] args) {

    char x = 'X';

    int i = 0;

    System.out.println(true ? x : 0 );

    System.out.println(true ? x :65536);

    System.out.println(false ? i : x );

    }

    }

    代码四

    public class FinallyT{

    public static void main(String[] args){

    System.out.println(test());

    }

    public static boolean test(){

    try{

    return false;

    }finally{

    return true;

    }

    }

    }

    代码五

    public class ExceptionT{

    public static void main(String[] args){

    ExceptionT pointer =null;

    try{

    pointer.print();

    }catch(NullPointerException e){

    System.out.println(\"Hello,Exception!\");

    }

    }

    public static void print(){

    System.out.println(\"Hello,World!\");

    }

    }

    更多相关内容
  • 下面是一个直接使用InputStream和OutputStream进行文件读写的代码: @Test public void testOutAndInputStream(){ try { DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream("/...

    点击上方 "程序员小乐"关注, 星标或置顶一起成长

    每天凌晨00点00分, 第一时间与你相约

    每日英文

    This is the way I am. I treat well those who treat me well.

    我就是这么一个人,谁对我好我就对谁好。

    每日掏心

    每一发奋努力的背后,必有加倍的赏赐。再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达。诚心诚意,诚字的另一半就是成功。

    来自:泥瓦匠BYsocket | 责编:乐乐

    程序员小乐(ID:study_tech) 第 881 次推文  图源:百度

    往日回顾:GitHub下载,可达到2MB/s,堪称加速神器!

         

       正文   

    前言

    程序的性能受到代码质量的直接影响。这次主要介绍一些代码编写的小技巧和惯例。虽然看起来有些是微不足道的编程技巧,却可能为系统性能带来成倍的提升,因此还是值得关注的。

    慎用异常

    在Java开发中,经常使用try-catch进行错误捕获,但是try-catch语句对系统性能而言是非常糟糕的。虽然一次try-catch中,无法察觉到她对性能带来的损失,但是一旦try-catch语句被应用于循环或是遍历体内,就会给系统性能带来极大的伤害。

    以下是一段将try-catch应用于循环体内的示例代码:

    @Test
        public void test11() {
    
            long start = System.currentTimeMillis();
            int a = 0;
            for(int i=0;i<1000000000;i++){
                try {
                    a++;
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
            long useTime = System.currentTimeMillis()-start;
            System.out.println("useTime:"+useTime);
        }	

    上面这段代码运行结果是:   

    useTime:10

    下面是一段将try-catch移到循环体外的代码,那么性能就提升了将近一半。如下:   

    @Test
        public void test(){
            long start = System.currentTimeMillis();
            int a = 0;
            try {
                for (int i=0;i<1000000000;i++){
                    a++;
                }
            }catch (Exception e){
                e.printStackTrace();
            }
            long useTime = System.currentTimeMillis()-start;
            System.out.println(useTime);
        }

    运行结果:

    useTime:6

    使用局部变量

    调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度较慢。

    下面是一段使用局部变量进行计算的代码:

    @Test
        public void test11() {
    
            long start = System.currentTimeMillis();
            int a = 0;
            for(int i=0;i<1000000000;i++){
                a++;
            }
            long useTime = System.currentTimeMillis()-start;
            System.out.println("useTime:"+useTime);
    
        }

    运行结果:

    useTime:5

    将局部变量替换为类的静态变量:   

    static int aa = 0;
        @Test
        public void test(){
            long start = System.currentTimeMillis();
    
            for (int i=0;i<1000000000;i++){
                aa++;
            }
            long useTime = System.currentTimeMillis()-start;
            System.out.println("useTime:"+useTime);
        }

    运行结果:   

    useTime:94

    通过上面两次的运行结果,可以看出来局部变量的访问速度远远高于类成员变量。

    位运算代替乘除法

    在所有的运算中,位运算是最为高效的。因此,可以尝试使用位运算代替部分算术运算,来提高系统的运行速度。最典型的就是对于整数的乘除运算优化。

    下面是一段使用算术运算的代码:

    @Test
        public void test11() {
    
            long start = System.currentTimeMillis();
            int a = 0;
            for(int i=0;i<1000000000;i++){
                a*=2;
                a/=2;
            }
            long useTime = System.currentTimeMillis()-start;
            System.out.println("useTime:"+useTime);
        }

    运行结果:

    useTime:1451

    将循环体中的乘除运算改为等价的位运算,代码如下:

    @Test
        public void test(){
            long start = System.currentTimeMillis();
            int aa = 0;
            for (int i=0;i<1000000000;i++){
                aa<<=1;
                aa>>=1;
            }
            long useTime = System.currentTimeMillis()-start;
            System.out.println("useTime:"+useTime);
        }

    运行结果:

    useTime:10

    上两段代码执行了完全相同的功能,在每次循环中,都将整数乘以2,并除以2。但是运行结果耗时相差非常大,所以位运算的效率还是显而易见的。

    提取表达式

    在软件开发过程中,程序员很容易有意无意地让代码做一些“重复劳动”,在大部分情况下,由于计算机的高速运行,这些“重复劳动”并不会对性能构成太大的威胁,但若希望将系统性能发挥到极致,提取这些“重复劳动”相当有意义。

    比如以下代码中进行了两次算术计算:

    @Test
        public void testExpression(){
            long start = System.currentTimeMillis();
            double d = Math.random();
            double a = Math.random();
            double b = Math.random();
            double e = Math.random();
    
            double x,y;
            for(int i=0;i<10000000;i++){
                x = d*a*b/3*4*a;
                y = e*a*b/3*4*a;
            }
            long useTime = System.currentTimeMillis()-start;
            System.out.println("useTime:"+useTime);
    
        }

    运行结果:   

    useTime:21

    仔细看能发现,两个计算表达式的后半部分完全相同,这也意味着在每次循环中,相同部分的表达式被重新计算了。

    那么改进一下后就变成了下面的样子:

    @Test
        public void testExpression99(){
            long start = System.currentTimeMillis();
            double d = Math.random();
            double a = Math.random();
            double b = Math.random();
            double e = Math.random();
    
            double p,x,y;
            for(int i=0;i<10000000;i++){
                p = a*b/3*4*a;
                x = d*p;
                y = e*p;
            }
            long useTime = System.currentTimeMillis()-start;
            System.out.println("useTime:"+useTime);
        }

    运行结果:

    useTime:11

    通过运行结果我们可以看出来具体的优化效果。

    同理,如果在某循环中需要执行一个耗时操作,而在循环体内,其执行结果总是唯一的,也应该提取到循环体外。

    例如下面的代码:

    for(int i=0;i<100000;i++){
        x[i] = Math.PI*Math.sin(y)*i;
    }

    应该改进成下面的代码:

    //提取复杂,固定结果的业务逻辑处理到循环体外
    double p = Math.PI*Math.sin(y);
    for(int i=0;i<100000;i++){
        x[i] = p*i;
    }

    使用arrayCopy()

    数组复制是一项使用频率很高的功能,JDK中提供了一个高效的API来实现它。

    /**
         * @param      src      the source array.
         * @param      srcPos   starting position in the source array.
         * @param      dest     the destination array.
         * @param      destPos  starting position in the destination data.
         * @param      length   the number of array elements to be copied.
         * @exception  IndexOutOfBoundsException  if copying would cause
         *               access of data outside array bounds.
         * @exception  ArrayStoreException  if an element in the <code>src</code>
         *               array could not be stored into the <code>dest</code> array
         *               because of a type mismatch.
         * @exception  NullPointerException if either <code>src</code> or
         *               <code>dest</code> is <code>null</code>.
         */
        public static native void arraycopy(Object src,  int  srcPos,
                                            Object dest, int destPos,
                                            int length)

    如果在应用程序中需要进行数组复制,应该使用这个函数,而不是自己实现。

    下面来举例: 

     

    @Test
        public void testArrayCopy(){
            int size = 100000;
            int[] array = new int[size];
            int[] arraydest = new int[size];
    
            for(int i=0;i<array.length;i++){
                array[i] = i;
            }
            long start = System.currentTimeMillis();
            for (int k=0;k<1000;k++){
                //进行复制
                System.arraycopy(array,0,arraydest,0,size);
            }
            long useTime = System.currentTimeMillis()-start;
            System.out.println("useTime:"+useTime);
        }

    运行结果:

    useTime:59

    相对应地,如果在程序中,自己实现数组复制,其等价代码如下:

    @Test
        public void testArrayCopy99(){
            int size = 100000;
            int[] array = new int[size];
            int[] arraydest = new int[size];
    
            for(int i=0;i<array.length;i++){
                array[i] = i;
            }
            long start = System.currentTimeMillis();
            for (int k=0;k<1000;k++){
                for(int i=0;i<size;i++){
                    arraydest[i] = array[i];
                }
            }
            long useTime = System.currentTimeMillis()-start;
            System.out.println("useTime:"+useTime);
        }

    运行结果:

    useTime:102

    通过运行结果可以看出效果。

    因为System.arraycopy()函数是native函数,通常native函数的性能要优于普通函数。仅出于性能考虑,在程序开发时,应尽可能调用native函数。

    使用Buffer进行I/O操作

    除NIO外,使用Java进行I/O操作有两种基本方式;

    • 使用基于InpuStream和OutputStream的方式;

    • 使用Writer和Reader;

    无论使用哪种方式进行文件I/O,如果能合理地使用缓冲,就能有效地提高I/O的性能。

    InputStream、OutputStream、Writer和Reader配套使用的缓冲组件。

    如下图:

    使用缓冲组件对文件I/O进行包装,可以有效提升文件I/O的性能。

    下面是一个直接使用InputStream和OutputStream进行文件读写的代码:

    @Test
        public void testOutAndInputStream(){
    
            try {
                DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream("/IdeaProjects/client2/src/test/java/com/client2/cnblogtest/teststream.txt"));
                long start = System.currentTimeMillis();
                for(int i=0;i<10000;i++){
                    dataOutputStream.writeBytes(Objects.toString(i)+"\r\n");
                }
                dataOutputStream.close();
                long useTime = System.currentTimeMillis()-start;
                System.out.println("写入数据--useTime:"+useTime);
                //开始读取数据
                long startInput = System.currentTimeMillis();
                DataInputStream dataInputStream = new DataInputStream(new FileInputStream("/IdeaProjects/client2/src/test/java/com/client2/cnblogtest/teststream.txt"));
    
                while (dataInputStream.readLine() != null){
                }
                dataInputStream.close();
                long useTimeInput = System.currentTimeMillis()-startInput;
                System.out.println("读取数据--useTimeInput:"+useTimeInput);
            }catch (Exception e){
                e.printStackTrace();
            }
    
        }

    运行结果:

    写入数据--useTime:660
    读取数据--useTimeInput:274

    使用缓冲的代码如下:   

    @Test
        public void testBufferedStream(){
    
            try {
                DataOutputStream dataOutputStream = new DataOutputStream(
                        new BufferedOutputStream(new FileOutputStream("/IdeaProjects/client2/src/test/java/com/client2/cnblogtest/teststream.txt")));
                long start = System.currentTimeMillis();
                for(int i=0;i<10000;i++){
                    dataOutputStream.writeBytes(Objects.toString(i)+"\r\n");
                }
                dataOutputStream.close();
                long useTime = System.currentTimeMillis()-start;
                System.out.println("写入数据--useTime:"+useTime);
                //开始读取数据
                long startInput = System.currentTimeMillis();
                DataInputStream dataInputStream = new DataInputStream(
                        new BufferedInputStream(new FileInputStream("/IdeaProjects/client2/src/test/java/com/client2/cnblogtest/teststream.txt")));
    
                while (dataInputStream.readLine() != null){
                }
                dataInputStream.close();
                long useTimeInput = System.currentTimeMillis()-startInput;
                System.out.println("读取数据--useTimeInput:"+useTimeInput);
            }catch (Exception e){
                e.printStackTrace();
            }
    
        }	

    运行结果:   

    写入数据--useTime:22
    读取数据--useTimeInput:12

    通过运行结果,我们能很明显的看出来使用缓冲的代码,无论在读取还是写入文件上,性能都有了数量级的提升。

    使用Wirter和Reader也有类似的效果。

    如下代码:   

    @Test
        public void testWriterAndReader(){
    
            try {
                long start = System.currentTimeMillis();
                FileWriter fileWriter = new FileWriter("/IdeaProjects/client2/src/test/java/com/client2/cnblogtest/teststream.txt");
                for (int i=0;i<100000;i++){
                    fileWriter.write(Objects.toString(i)+"\r\n");
                }
                fileWriter.close();
                long useTime = System.currentTimeMillis()-start;
                System.out.println("写入数据--useTime:"+useTime);
                //开始读取数据
                long startReader = System.currentTimeMillis();
                FileReader fileReader = new FileReader("/IdeaProjects/client2/src/test/java/com/client2/cnblogtest/teststream.txt");
                while (fileReader.read() != -1){
                }
                fileReader.close();
                long useTimeInput = System.currentTimeMillis()-startReader;
                System.out.println("读取数据--useTimeInput:"+useTimeInput);
            }catch (Exception e){
                e.printStackTrace();
            }
    
        }

    运行结果:   

    写入数据--useTime:221
    读取数据--useTimeInput:147

    对应的使用缓冲的代码:  

     

    @Test
        public void testBufferedWriterAndReader(){
    
            try {
                long start = System.currentTimeMillis();
                BufferedWriter fileWriter = new BufferedWriter(
                        new FileWriter("/IdeaProjects/client2/src/test/java/com/client2/cnblogtest/teststream.txt"));
                for (int i=0;i<100000;i++){
                    fileWriter.write(Objects.toString(i)+"\r\n");
                }
                fileWriter.close();
                long useTime = System.currentTimeMillis()-start;
                System.out.println("写入数据--useTime:"+useTime);
                //开始读取数据
                long startReader = System.currentTimeMillis();
                BufferedReader fileReader = new BufferedReader(
                        new FileReader("/IdeaProjects/client2/src/test/java/com/client2/cnblogtest/teststream.txt"));
                while (fileReader.read() != -1){
                }
                fileReader.close();
                long useTimeInput = System.currentTimeMillis()-startReader;
                System.out.println("读取数据--useTimeInput:"+useTimeInput);
            }catch (Exception e){
                e.printStackTrace();
            }
    
        }

    运行结果:

    写入数据--useTime:157
    读取数据--useTimeInput:59

    通过运行结果可以看出,使用了缓冲后,无论是FileReader还是FileWriter的性能都有较为明显的提升。

    在上面的例子中,由于FileReader和FilerWriter的性能要优于直接使用FileInputStream和FileOutputStream所以循环次数增加了10倍。

    欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,学习能力的提升上有新的认识,欢迎转发分享给更多人。

    欢迎各位读者加入订阅号程序员小乐技术群,在后台回复“加群”或者“学习”即可。

    猜你还想看

    阿里、腾讯、百度、华为、京东最新面试题汇集

    你这API设计的真”辣鸡“,简直没法看!

    为什么超级计算机都不用Windows或MacOS系统?

    用户密码加密存储十问十答,一文说透密码安全存储

    关注订阅号「程序员小乐」,收看更多精彩内容
    

    嘿,你在看吗

    展开全文
  • java代码大全

    千次阅读 2021-03-07 09:33:03
    【实例简介】该书适合刚入手java的童鞋,该书由浅入深,是一个不错的自学用书。导论Java程序设计导论1.1 Hello, World!程序清单1: Hello world.iava1/2*@(#)HelloWorld. java 0.30 08/28/104* Show message” Hello,...

    【实例简介】

    该书适合刚入手java的童鞋,该书由浅入深,是一个不错的自学用书。

    导论

    Java程序设计

    导论

    1.1 Hello, World!

    程序清单1: Hello world.iava

    1/

    2*@(#)HelloWorld. java 0.30 08/28/10

    4* Show message” Hello, World!” in Console

    6 @author xiaohua xu

    *@ version②.30

    8 *k @ since 0.20

    @see System. in

    11

    12

    13 public class HelloWorld t

    public static void main(String args)t

    6

    System. out. println( "Hello, World!

    18}

    程序清单2: Hello WorldDialog java

    1

    2 *@(#)HelloWorldDialog java 0.20 08/28/10

    4* Show message Hello, World!' in JOptionPane

    6 @author xiaohua xu

    @version 0.30

    8 @since 0.20

    9 @see javax. swing JOptionPane

    OT

    12 import javax. swing JOptionPane

    13

    14 public class Hel loWor ldDialog i

    5678

    String message =>Hello, World!

    public static void main (Stringl arg

    JOptionPane showMessageDialog(nuLl, message);

    1

    20

    程序清单3: Hello WorldApp.java

    /

    半米

    2*@#)He L ldApp. java 0.30 08/28/10

    4* Show message Hello, World! in Console

    DONT DⅠSTRⅠ BUTE IT!

    April 15,2012

    2基础知识

    Java程序设计

    6 *k @author Xiaohua xu

    7 @version 0.30

    8 *k @since 0.20

    @see System. in

    10

    12 public class he l lowor ldapp i

    13

    public void maino i

    System, out. print("Hello, World! )

    System, out. println(;

    11111

    56789

    public static void main (String] args)t

    Hel ldApp app= new He l loWor ldApp;

    20

    app. main(

    21

    2

    12 Unicode演示

    匚程序清单4 UnicodeDemo

    1/*米

    2* @(#Uni codeDemo, java 0. 20 08/28/10

    4* Show Uni code u2122 as Java

    TM

    6 @author Xiaohua Xu

    @version 0.20

    8 @since 0.10

    9 @see JoptionPane

    1O冰

    12 pubLic class Uni code Demo I

    3

    public static final char TRADE_MARK \u2122

    15 public static void show (String str)i

    javax. swing.JOptionPane showMessageDialog(nuLl, str);

    1112

    public static void main (String args)t

    String message=”Java”+ TRADE MARK;

    System, out. println(message);

    show (message)

    System. exit(o);

    26

    2基础知识

    21加法

    DONT DⅠSTRⅠ BUTE IT!

    April 15,2012

    2基础知识

    Java程序设计

    程序清单 Addition.java

    1/**

    2 * @(*)Addition. java

    4 *@author Xiaohua Xu

    5*@ version0.92009/03/05

    8 import javax. swing JOptionPane

    10 public class Addition i

    public static void main( Stringl] args)t

    111

    String firstNumber;

    String secondNumber

    16

    int number 1

    int number 2

    18

    int sum,

    19

    firstNumber JOptionPane showInputDialog("First Num)

    secondNumber OPtion Pane. showInputDialog ("Second Num

    number1 Integer parseInt(firstNumber )

    2345

    number 2 Integer parseInt(secondNumber);

    sum number 1+ number 2

    J0ption Pane showMessageDialogo

    6789o

    The Sum is:”+sum

    Results”

    JOptionPane PLAIN_MESSAGE

    32

    System. exit( 0

    22浮点数注意

    程序清单6: DoubleDemo. java

    /*

    2 *@(#)DoubL eDemo java

    4* @author Xiaohua Xu

    5*@ verslon1.02009/03/05

    8 public class Doub leDemo t

    public static void main(String args)t

    double x=0.0:

    //初始量

    12

    double delta =0.1

    增长量

    int n=10

    //迭代次数

    14

    5

    System. out. println(x)

    //输出到屏幕

    DONT DⅠSTRⅠ BUTE IT!

    April 15,2012

    2基础知识

    Java程序设计

    for(int讠=0;i

    1

    678

    x t= delta

    /每次递增 delta

    System. out. println(x);

    //屏幕输出

    19

    0

    21

    23数值最值

    程序清单z: MaxMin ValueOfVariableDemo java

    1/*米

    2 *@(#)MaxMinValueOfVariableDemo java

    3*输出冬和变量的最大值和最小值

    @author Xiaohua Xu

    6*@ verslon1.0010/03/15

    9 public class MaxMinValueOfVariableDemo t

    10

    public static void main(Stringl args) t

    11

    System. out. printInG The largest byte value is

    + Byte. MAX_ VALUE+”,”);

    13

    System. out. printLn( The smallest byte value is

    + Byte. MIN_VALUE+”.”);

    15

    System, out. println( The largest short value is

    1

    + Short. maX_ VALUE+”.”);

    8

    System, out println("The smallest short value is

    + Short. MIN VALUE+”.”);

    20

    System, out. println( The largest integer value is

    2

    + Integer. MAX VALUE+”.”);

    System, out. println(" The smallest integer value is

    +工 nteger MIN_ VALUE+”.”);

    System. out. println( The largest long value is

    Long MAX VALUE

    System. out. println(" The largest long value is

    2

    Long. MIN_VALUE+”.);

    30

    31

    ystem, out. printLn The largest float value is

    + FLoat. MAX VALUE+”.”);

    33

    System, out. printLn( The smallest float value is

    34

    + Float. MIN value+”.”);

    35

    36

    System, out. println(The largest double value is

    + Double. mAX_VALU+”.”);

    System, out. println( The smallest double value is

    + Double. MIN VALUE+”.”)

    41

    42

    循环

    DONT DⅠSTRⅠ BUTE IT!

    April 15,2012

    2基础知识

    Java程序设计

    程序清单8: WhileDo. java

    1/**

    2 *@(#)WhileDo. java

    4* Since b"' is already false when it reaches the

    5* test, the loop never executes

    @author Xiaohua xu

    8*@ verslon.92009/03/05

    11 public class Whiledo i

    12

    public static void main(String args)t

    boolean b= false:

    1111

    4567

    while( b)i

    System. out. println( Execute WhileDo while b is true);

    tt toc

    1

    程序清单g: WhileDoTest. java

    /

    @(#WhiLe DoTest java

    4*@author Xiaohua Xu

    5*@ verslon0.92009/03/05

    8 import javax. Swing JOptionPane

    10 public class Whiledotest t

    11

    11

    2

    public static void main(String[] args)t

    int b= 2

    int s=

    1

    while( b>s)t

    18

    JOptionPane. showMessageDialogo

    1

    null

    0

    Big is still bigger”

    21

    Results

    2

    JOption Pane. INFORMATION_ MESSAGE

    String big =JOptionPane. showInputDialog("Big Number>)

    26

    String small= JOptionPane show InputDialog( SmaLl Number

    b= Integer parseInt( big )

    Integer parseInt( smaLl)

    31

    ystem. exit(0);

    DONT DⅠSTRⅠ BUTE IT!

    April 15,2012

    2基础知识

    Java程序设计

    32

    33

    程序清单10: Do While. java

    2 * @()DoWhileTest java

    4*@author Xiaohua Xu

    5*@ version0.92009/03/05

    7 import javax. swing JOptionPane;

    9 public class DoWhileTest t

    public static void main ([ args)t

    int b= 2;// preload variables

    int s= 1;// preload variables

    1111111

    4

    do t

    56789

    JOptionPane. showMessageDialogo

    null

    Big is still Bigger”

    Results”,

    JOption Pane INFORMATION_MESSAGE

    222

    012345

    String big JOptionPane showInputDialog("Big Number")

    String smaLl= JOptionPane. showInputDialog("SmaLl Number

    26

    b= Integer parseInt(big)

    2

    s=Integer parseInt(smaLL)

    789o

    f while(b> s;

    System, exit( 0)

    31

    32

    25选择

    程序清单11: Selection Test java

    米*/I

    2* @()SelectionTest java

    4* @author Xiaohua Xu

    5*@ version9.92009/03/05

    6*/

    8 import javax. swing JOptionPane;

    10 public class SelectionTest t

    public static void main(String[ args) t

    DONT DⅠSTRⅠ BUTE IT!

    April 15,2012

    2基础知识

    Java程序设计

    14

    String big JOptionPane showInputDialog("Big Number>)

    15

    String small= J0ptionPane showInputDialog( SmaLL Number)

    int b= Integer parseInt(big);

    比t

    Integer parseInt(smaLl);

    1

    1

    String out =(b>s? Big was Larger: Small was larger

    20

    JOptionPane showMessageDialog(nuLl, out

    Results", OPtion Pane. INFORMATION_MESSAGE

    System. exit(0);

    26

    2.6增量

    程序清单12: PrePostIncrement. java

    /*米

    2 *@(#PrePostIncrement java

    4* @author Xiaohua Xu

    5*@ verslon0.92009/03/05

    8 public class PrepostIncrement

    public static void main (String args)

    11

    int x= a

    12

    System.out. println(” Baseline,x=”+x);

    System, out. println( >Pre-increment =++x=>+++X )

    1

    System, out. printLn( "After increment, x="+X);

    X=0;

    System,out. println(” 2nd baseline,x=”+×);

    System. out. println( "Post-increment = X++=3+X++)

    1

    System, out. println( After increment,x

    X

    //System. exit( 0);

    27温度转换

    程序清单13: FahrenheitToCelsius.java

    2 *@(#)FahrenheitToCelsius java

    4* celsius =9(fahrenheit- 32)

    @author xiaohua Xu

    7*@ version0.92009/03/05

    DONT DⅠSTRⅠ BUTE IT!

    April 15,2012

    3简单程序

    Java程序设计

    10 public class FahrenheitTocelsius i

    public static void main(String args)t

    double fahrenheit 100;

    111111

    double celsius =(5.0/9.0*(fahrenheit -32)

    4567890

    System. out. println(” Fahrenheit”+ fahrenheit+”is

    + celsius+” in Celsius.”);

    3简单程序

    31数学工具

    程序清单14: AbsDemo.java

    1/*米

    2 *@(#) AbsDemojava

    4 @author Xiaohua Xu

    5*@ version1.002009/03/05

    9 public class absDemo t

    12

    public static void main(Stringl args)t

    double x =-0.0.

    1

    System.out, println(”abs(”++”)=”+Math.abs(x));

    6

    20

    System. out. println(”abs(”+×+”)=”+Math.abs(x);

    Double. POSITIVE INFINITY

    ystem.out. println(”abs(”+x+”)=”+Math.abs(x);

    x= Double NeGATive Infinity

    System. out. println(”abs(”+Ⅹ+”)

    Math. abs(x))

    x= Double nan

    System. out. println(”abs(”+x+”)=”+Math.abs(x));

    10.5

    30

    double y

    20.1

    31

    System.out. println(”max(”+x+

    y+”)

    Math. max

    32

    System.out. println(”mix(”+X+”,”+y+”)=”+Math.min

    33

    ystem.out. println(”max”+x+

    nax(x, y

    DONT DⅠSTRⅠ BUTE IT!

    10

    April 15, 2012

    【实例截图】

    【核心代码】

    展开全文
  • java代码模板

    热门讨论 2012-05-17 18:32:43
    亲,只需要用文本工具打开把我的名字全换掉就OK啦,想改的详细点就自己去别的地方捅捅吧。
  • 标题:java课程设计简易计算器源代码 JAVA代码有解析 免费分享 先言 这是我挺久以前课程设计java写的计算器,只能实现基本的功能,我现在分享出来希望能帮助到别人。写得其实挺一般的,见谅见谅。有课程设计任务...

    标题:java课程设计(简易计算器)源代码 JAVA 源代码有解析 免费分享

    先言

    这是我挺久以前课程设计java写的计算器,只能实现基本的功能,我现在分享出来希望能帮助到别人。写得其实挺一般的,见谅见谅。有课程设计任务的学弟学妹也是写计算器的可以看看参考参考。源代码里我写有挺多解析的,能帮助理解。

    功能描述:

    参考 Windows操作系统提供的计算器设计一个实用的计算器,要求除了具有普通的计算功能外,还具有保存计算过程的功能。
    ①单击计算器上的数字按钮(0、1、2、3、4、5、6、7、8、9)可以设置参与计算的运算数。
    ②单击计算器上的运算符按钮(+、—、*、/)可以选择运算符号。
    ③单击计算器上的函数按钮可以计算出相应的函数值。
    ④单击计算器上的等号(=)按钮显示计算结果。
    ⑤在一个文本框中显示当前的计算过程,在一个文本区中显示以往的计算过程。
    ⑥单击“保存”按钮可以将文本区中显示的全部计算过程保存到文件:单击“复制”按钮可以将文本区中选中的文本复制到剪贴板单击“清除”技钮可以清除文本区中的全部内容。

    注意事项:

    一.
    总体包含11个Java源文件。Work.java ; ShuziButton.java ; SymbolButton.java ;
    OperateNumber.java ; OperateSymbol.java ; OperateBack.java ; OperateClear.java ;OperateEquality.java ;OperateDot.java ;
    OperateZhengFu.java ; OperateSin.java
    二.各个源文件实现功能

    1. Work.java负责计算器主窗口的创建。含有main方法。从该类开始执行。同样也负责(退格,=,归零,. ,+/-,sin)按钮创建。
    2. SymbolButton.java 负责(+,-,*,/)四个运算符号按钮的创建。
    3. ShuziButton.java 负责0-9数字按钮的创建。
    4. OperateNumber.java 负责用户点击数字(0-9)按钮时的事件处理。
    5. OperateSymbol.java 负责用户点击(+,-,*,/)按钮时的事件处理。
    6. OperateBack.java 负责用户点击(退格)按钮时的事件处理。
    7. OperatClear.java 负责用户点击(归零)按钮时的事件处理。
    8. OperateEquality 负责用户点击(=)按钮十五的事件处理。
    9. OperateDot.java 负责用户点击( . )按钮时的事件处理。
    10. OperateZhengFu.java 负责用户点击(+/-)按钮时的事件处理。
    11. OperateSin.java.java 负责用户点击(Sin)按钮时的事件处理。

    三:涉及的知识点
    12. 基本数据类型与数组。
    13. 运算符,表达式和语句。
    14. 类与对象。
    15. 子类与继承。
    16. 接口与实现。
    17. 内部类与异常类。
    18. 常用String类。
    19. 组件及事件处理。
    20. 输入与输出流。
    21. Linked List类的基本用法。

    直接先看效果:

    效果

    全部源文件都是放在 keshe这个包里面,直接用的话建这个包再复制源文件代码进去就行或者自己重新写 package代码用自己建的包名。

    源码:

    1.work.java

     package keshe;
    
    import java.util.LinkedList;
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.border.*;
    
    public class Work extends JFrame implements ActionListener {
       JButton sin,Backspace,Equals,Zero,Flex,zhengfu;
       JButton saveButton,clearButton,copyButton;
       JTextField resultDisplay;  //当前输入与运算结果显示。
       JTextField processShow;   //  当前计算过程显示。
       JTextArea  stepShow;     //计算步骤显示。
       LinkedList<String>list;  //存放第一个数,操作符号与第二个数。
       ShuziButton shuziButton[];  
       SymbolButton symbolButton[];
       OperateNumber operateNumber;    //处理ActionEvent事件。
       OperateSymbol operateSymbol;    
       OperateBack   operateBack;       
       OperateClear  operateClear;     
       OperateEquality operateEquality;  
       OperateDot   operateDot;         
       OperateZhengFu operateZhengFu;
       OperateSin    operateSin;     
       public Work() {    //构造方法
    	   setTitle("五彩缤纷的计算——XXX");
    	   setVisible(true);    //窗口可见。
    	   setBounds(120,60,600,300);     //窗口的初始位置与长与宽;
    	   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击关闭后结束窗口所在的应用程序。
    	   JPanel panelZuo,panelYou;  //面板
    	   list=new LinkedList<String>();
    	   resultDisplay=new JTextField(10);
    	   resultDisplay.setHorizontalAlignment(JTextField.RIGHT);  //对齐方式
    	   resultDisplay.setFont(new Font("TimesRoman",Font.BOLD,16));//字体样式,字体格式 ,字体大小
    	   resultDisplay.setForeground(Color.green);    //字体颜色
    	   resultDisplay.setBackground(Color.white); //背景色
    	   resultDisplay.setEditable(false); //选项不可用
    	   resultDisplay.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));//显示半个边框
    	   processShow=new JTextField();
    	   processShow.setHorizontalAlignment(JTextField.CENTER);  //对齐方式
    	   processShow.setFont(new Font("Arial",Font.BOLD,16));//字体样式,字体格式 ,字体大小
    	   processShow.setBackground(Color.green);
    	   processShow.setEditable(false); //选项不可用
    	   stepShow=new JTextArea();
    	   stepShow.setEditable(false); //选项不可用
    	   stepShow.setFont(new Font("宋体",Font.PLAIN,16));
    	   stepShow.setForeground(Color.blue);   //字体颜色
    	   shuziButton=new ShuziButton[10];
    	   operateNumber = new OperateNumber(list,resultDisplay,processShow);
    	   for(int i=0;i<=9;i++) {
    		   shuziButton[i]=new ShuziButton(i); 
    		   shuziButton[i].setFont(new Font("Arial",Font.BOLD,20)); //数字样式,格式,大小
    		   shuziButton[i].addActionListener(operateNumber);  //shuziButton将operateNumber注册为自己的监视器		   
    	   }
    	   symbolButton=new SymbolButton[4];
    	   operateSymbol=new OperateSymbol(list,resultDisplay,processShow,stepShow);
    	   String fuhao1[]= {"+","-","*","/"};
    	   for(int i=0;i<4;i++) {
    		   symbolButton[i]=new SymbolButton(fuhao1[i]);
    		   symbolButton[i].setFont(new Font("Arial",Font.BOLD,20));
    		   symbolButton[i].addActionListener(operateSymbol);  //symbolButton将operateSymbol注册为自己的监视器	
    	   }
    	   Flex=new JButton(".");
    	   operateDot=new OperateDot(list,resultDisplay,processShow);
    	   Flex.addActionListener(operateDot);
    	   zhengfu=new JButton("+/-");
    	   operateZhengFu=new OperateZhengFu(list,resultDisplay,processShow);
    	   zhengfu.addActionListener(operateZhengFu);
    	   Zero=new JButton("归零");
    	   operateClear=new OperateClear(list,resultDisplay,processShow);
    	   Zero.addActionListener(operateClear);
    	   Backspace=new JButton("退格");
    	   operateBack=new OperateBack(list,resultDisplay,processShow);
    	   Backspace.addActionListener(operateBack);
    	   Equals=new JButton("=");
    	   operateEquality=new OperateEquality(list,resultDisplay,processShow,stepShow); 
    	   Equals.addActionListener(operateEquality);
    	   sin=new JButton("sin");
    	   operateSin=new OperateSin(list,resultDisplay,processShow,stepShow);
    	   sin.addActionListener(operateSin);
    	   Zero.setForeground(Color.green);          //颜色
    	   Backspace.setForeground(Color.cyan);
    	   Equals.setForeground(Color.magenta);
    	   Flex.setForeground(Color.gray);
    	   zhengfu.setForeground(Color.red);
    	   sin.setForeground(Color.pink);
    	   panelZuo=new JPanel();
    	   panelYou=new JPanel();   
    	   panelZuo.setLayout(new BorderLayout());        //panelZuo使用BorderLayout布局。
    	   JPanel centerZuo=new JPanel();         //建一个放在panelZuo中间部分的centerZuo容器放数字与符号。
    	   panelZuo.add(resultDisplay,BorderLayout.NORTH);     //运算结果放在panelZuo容器的北边。   
    	   panelZuo.add(centerZuo,BorderLayout.CENTER);
    	   centerZuo.setLayout(new GridLayout(5,4));            //centerZuo使用GridLayout布局;
    	   centerZuo.add(symbolButton[0]);
    	   centerZuo.add(symbolButton[1]);
    	   centerZuo.add(symbolButton[2]);
    	   centerZuo.add(symbolButton[3]);
    	   centerZuo.add(shuziButton[1]);
    	   centerZuo.add(shuziButton[2]);
    	   centerZuo.add(shuziButton[3]);
    	   centerZuo.add(zhengfu);
    	   centerZuo.add(shuziButton[4]);
    	   centerZuo.add(shuziButton[5]);
    	   centerZuo.add(shuziButton[6]);
    	   centerZuo.add(sin);
    	   centerZuo.add(shuziButton[7]);
    	   centerZuo.add(shuziButton[8]);
    	   centerZuo.add(shuziButton[9]);
    	   centerZuo.add(Backspace);
    	   centerZuo.add(shuziButton[0]);
    	   centerZuo.add(Flex);
    	   centerZuo.add(Equals);
    	   centerZuo.add(Zero);
    	   panelYou.setLayout(new BorderLayout());      //panelYou使用BorderLayout布局。
    	   panelYou.add(processShow,BorderLayout.NORTH);          //  运算过程放在panelYou的北边.
    	   saveButton=new JButton("保存");
    	   copyButton=new JButton("复制");
    	   clearButton=new JButton("清除");
    	   saveButton.setForeground(Color.blue);    //颜色
    	   copyButton.setForeground(Color.red);
    	   clearButton.setForeground(Color.gray);
    	   saveButton.setToolTipText("保存计算过程到文件里");          //设置鼠标停留在saveButton上时显示的信息;
    	   copyButton.setToolTipText("复制选中计算过程");       //设置鼠标停留在copyButton上时显示的信息;
    	   clearButton.setToolTipText("清除计算过程");         //设置鼠标停留在clearButton上时显示的信息;
    	   saveButton.addActionListener(this);
    	   clearButton.addActionListener(this);
    	   copyButton.addActionListener(this);
    	   panelYou.add(new JScrollPane(stepShow),BorderLayout.CENTER);//滚动窗格
    	   JPanel  southYou=new JPanel();                 //建一个放在panelYou南边的southYou容器存放3个文字按钮。
    	   southYou.add(saveButton);   //放入按钮
    	   southYou.add(copyButton);
    	   southYou.add(clearButton);
    	   panelYou.add(southYou,BorderLayout.SOUTH);//将southYou放在panelYou南边。
    	   JSplitPane split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,panelZuo,panelYou);//界面一分为二;
    	   add(split,BorderLayout.CENTER);
    	   validate();
          }
    	  public void actionPerformed(ActionEvent e) {
    		  if(e.getSource()==copyButton) {     //如果按下复制按钮
    			  stepShow.copy();        //实现复制
    		  }
    		  if(e.getSource()==clearButton) {  //如果按下清除按钮
    			  stepShow.setText(null);   //实现清除
    		  }
    		  if(e.getSource()==saveButton){   //如果按下保存按钮
    			  JFileChooser chooser=new JFileChooser();  //文件选择器
    			  int state = chooser.showSaveDialog(null);  //显示文件保存对话框
    			  File file = chooser.getSelectedFile();  //输入要保存的文件名;
    			  if(file!=null&&state==JFileChooser.APPROVE_OPTION) {   //若选好了文件.
    				  try {
    					  String baoCun=stepShow.getText(); //将运算步骤文本赋值给baoCun;
    					  StringReader read = new StringReader(baoCun); //生成字符流。
    					  BufferedReader in=new BufferedReader(read);  //生成缓冲输入流。
    					  FileWriter out=new FileWriter(file); //根据选好的文件,生成FileWriter对象;
    					  BufferedWriter out1=new BufferedWriter(out);  //生成缓冲输出流;
    					  String str=null;
    					  while((str=in.readLine())!=null) {  //判断是否有字符
    						  out1.write(str);  //把内容写到文件中
    						  out1.newLine();    //新的一行					  
    					  }
    					  in.close();  //关闭文件;
    					  out1.close();	  
    				  }catch(IOException el){
    					  
    				  }
    				  
    			  }		  			  
    		  }
    		  
    	  } 
    	public static void main(String args[]) {
    		 new Work();
    	 }
       }
       
    

    2.OperateBack.java

    package keshe;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.LinkedList;
    import javax.swing.JTextField;
    
    public class OperateBack implements ActionListener{
    	   LinkedList<String>  list;
    	   JTextField resultDisplay;   //当前输入与运算结果显示
    	   JTextField processShow;    //显示当前计算过程
    	   OperateBack(LinkedList<String> list1,JTextField one,JTextField two) {      //构造方法
    		   list=list1;
    		   resultDisplay=one;
    		   processShow=two;   
    	   }
    	   public void actionPerformed(ActionEvent e) {
    		   if(list.size()==1) {
    			   String shu =(String) list.getFirst();  //获取第一个元素
    			   if(shu.length()>=1) {   //判断第一个运算数有几位数
    				   shu=shu.substring(0,shu.length()-1);  //提取字符串(不要最后一位数)
    				   list.set(0, shu);     //替换				   
    				   resultDisplay.setText(""+shu); 
    				   processShow.setText(""+shu);				   
    			   }else {       //只有一位数
    				   list.removeLast();      //移除第一位数
    				   resultDisplay.setText("0"); 
    				   processShow.setText("0");				   
    			   }
    		   }else if(list.size()==3) {
    			   String shu2 =(String) list.getLast();  //获取第二个运算数字
    			   if(shu2.length()>=1) {   //判断第一个运算数有几位数
    				   shu2=shu2.substring(0,shu2.length()-1);  //提取字符串(不要最后一位数)
    				   list.set(2, shu2);     //替换				   
    				   resultDisplay.setText(""+shu2); 
    				   processShow.setText(""+shu2);				   
    			   }else {       //只有一位数
    				   list.removeLast();      //移除第二运算位数
    				   resultDisplay.setText("0"); 
    				   processShow.setText("0");				   
    			   }
    		   }
    	   }
    
    }
    

    3.OperateClear.java

    package keshe;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.LinkedList;
    import javax.swing.JTextField;
    
    public class OperateClear implements ActionListener {
    	LinkedList<String>  list;
    	   JTextField resultDisplay;    //当前输入与运算结果显示
    	   JTextField processShow;        //显示当前计算过程
    	   OperateClear(LinkedList<String> list1,JTextField one,JTextField two) {      //构造方法
    		   list=list1;
    		   resultDisplay=one;
    		   processShow=two;   
    	   }
    	   public void actionPerformed(ActionEvent e) {
    		   resultDisplay.setText("0");
    		   list.clear();               //全部清除
    		   processShow.setText(null);
    		   
    		   
    	   }
    }
    

    4.OperateDot.java

    package keshe;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.LinkedList;
    import javax.swing.JTextField;
    public class OperateDot implements ActionListener{
    	   LinkedList<String>  list;
    	   JTextField resultDisplay;      //当前输入与运算结果显示
    	   JTextField processShow;              //显示当前计算过程
    	   OperateDot(LinkedList<String> list1,JTextField one,JTextField two) {      //构造方法
    		   list=list1;
    		   resultDisplay=one;
    		   processShow=two; 
    	   }
    	   public void actionPerformed(ActionEvent e) {
    		   String dot = e.getActionCommand();  //获取小数点
    		   if(list.size()==1)  {
    			   String a = list.getFirst();    //获取第一个元素
    			   String b = null ;
    			   if(a.indexOf(dot)==-1) {     //判断是否出现dot
    				   b=a.concat(dot);    //把小数点拼接在数字后面
    				   list.set(0, b);         //替换
    			   }else {
    				   b=a;
    			   }
    			   resultDisplay.setText(b);
    			   processShow.setText(""+list.get(0));
    		    }else if (list.size()==3 ) {
    		       String a = list.getLast();    //获取第3个元素
    			   String b = null ;
    			   if(a.indexOf(dot)==-1) {     //判断是否出现dot
    				   b=a.concat(dot);    //把小数点拼接在数字后面
    				   list.set(2, b);         //替换
    			   }else {
    				    b=a;
    				   }
    			   resultDisplay.setText(b);
    			   processShow.setText(""+list.get(0)+""+list.get(1)+""+list.get(2));	
    		    }
    	   }
    
    }
    

    5.OperateEquality.java

    package keshe;
    import  java.awt.event.ActionEvent;
    import  java.awt.event.ActionListener;
    import java.util.LinkedList;
    import javax.swing.JTextField;
    import javax.swing.JTextArea;
    public class OperateEquality implements ActionListener{
    	   LinkedList<String>  list;
    	   JTextField resultDisplay;   //当前输入与运算结果显示
    	   JTextField processShow;     //显示当前计算过程
    	   JTextArea stepShow;       // 显示计算步骤整体过程
    	   OperateEquality(LinkedList<String> list1,JTextField one,JTextField two,JTextArea three) {      //构造方法
    		   list=list1;
    		   resultDisplay=one;
    		   processShow=two; 
    		   stepShow=three;
    	   }
    	   public void actionPerformed(ActionEvent e) {
    		   if(list.size()==1)  {
    			   String a = list.getFirst();    //获取第一个元素
    			   resultDisplay.setText(a);
    			   processShow.setText(list.get(0));
    		    }
    		   if(list.size()==2)  {
    			   String a = list.getFirst();    //获取第一个元素
    			   
    			   resultDisplay.setText(a);
    			   processShow.setText(list.get(0));
    		    }
    		    else if(list.size()==3) { 
    		    	String a = list.getFirst();  //获取第一个元素
    		    	String b = list.get(1);      //获取第二个元素
    		    	String c = list.getLast();   //获取最后一个元素
    		    	try {
    		    		double d1 = Double.parseDouble(a);
    		    		double d2 = Double.parseDouble(c);   //数据类型转换
    		    		double result = 0;
    		    		if(b.equals("+")) {
    		    			result = d1 + d2 ;
    		    		}else if(b.equals("-")) {
    		    			result = d1 - d2;
    		    		}else if(b.equals("*")) {
    		    			result = d1*d2;
    		    		}else if(b.equals("/")) {
    		    			result = d1/d2;
    		    		}
    		    		String step = ""+a+""+b+""+c+"="+result;
    		    		resultDisplay.setText(""+result);
    		    		processShow.setText(step);
    		    		stepShow.append(""+step+"\n");
    		    		list.set(0, ""+result);   //将第一个元素为结果
    		    		list.removeLast();   //清除第二个运算数
    		    		list.removeLast();      //清除符号
    		    	}catch (Exception ee) {
    		    		
    		      }			   
    		    }
    	   }
    }
    

    6.OperateNumber.java

    package keshe;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.LinkedList;
    import javax.swing.JTextField;
    public class OperateNumber implements ActionListener {
       LinkedList<String>  list;
       JTextField resultDisplay;        //当前输入与运算结果显示
       JTextField processShow;         //显示当前计算过程
       OperateNumber(LinkedList<String> list1,JTextField one,JTextField two) {      //构造方法
    	   list=list1;
    	   resultDisplay=one;
    	   processShow=two;   
       }
    	public void actionPerformed(ActionEvent e) {
    		ShuziButton s=(ShuziButton)e.getSource();  //获得点击的ShuziButton
    		if(list.size()==0) {    //如果链表个数为零
    			int number=s.getNumber();    
    			list.add(""+number);  //向list添加元素
    			resultDisplay.setText(""+number);  //将resultDisplay对象上的文字设置成number
    		}else if(list.size()==1) {
    			int number=s.getNumber();
    			String a = list.getFirst();	//取得链表第一个元素
    			String b = a.concat(""+number);  //字符串拼接。
    			list.set(0, b);     //替换指定下标元素;
    			resultDisplay.setText(b);
    			processShow.setText(""+list.get(0));        //以上为储存输入的第一个运算数。
    		}else if(list.size()==2) {
    			int number=s.getNumber();
    			list.add(""+number);    //向列表添加新元素;
    			resultDisplay.setText(""+number);
    			processShow.setText(""+list.get(0)+""+list.get(1)+""+list.get(2));
    		}else if(list.size()==3) {
    			int number=s.getNumber();
    			String a = list.getFirst();	//取得链表第三个元素
    			String b = a.concat(""+number);  //字符串拼接。
    			list.set(2, b);     //替换指定下标元素;
    			resultDisplay.setText(b);
    			processShow.setText(""+list.get(0)+""+list.get(1)+""+list.get(2));        //以上为储存输入的第二个运算数
    		}		
    	}
    	
    }
    

    7.OperateSin.java

    package keshe;
    import  java.awt.event.ActionEvent;
    import  java.awt.event.ActionListener;
    import java.util.LinkedList;
    import javax.swing.JTextField;
    import javax.swing.JTextArea;
    public class OperateSin implements ActionListener{
    	   LinkedList<String>  list;
    	   JTextField resultDisplay;      //当前输入与运算结果显示
    	   JTextField processShow;    //显示当前计算过程
    	   JTextArea stepShow;        // 显示计算步骤整体过程
    	   OperateSin(LinkedList<String> list1,JTextField one,JTextField two,JTextArea three) {      //构造方法
    		   list=list1;
    		   resultDisplay=one;
    		   processShow=two; 
    		   stepShow=three;
    	   }
    	   public void actionPerformed(ActionEvent e) {
    		   if(list.size()==1||list.size()==2) {
    			   String a = list.getFirst();     //获取第一个元素
    			   try {
    				   double b = Double.parseDouble(a);  //数据类型转换
    				   double c = Math.sin(b);
    				   String d = String.valueOf(c) ;  //数据类型转换
    				   list.set(0, d);   //替换第一个元素
    				   String step = "sin("+a+")="+c;   //整个过程
    				   resultDisplay.setText(d);
    				   processShow.setText(step);
    				   stepShow.append(""+step+"\n");
    			     }catch(Exception ee) {
    		      }	 
    			 }else if(list.size()==3) {
    			    String a = list.getLast();     //获取最后一个元素
    			    try {
    				   double b = Double.parseDouble(a);  //数据类型转换
    				   double c = Math.sin(b);
    				   String d = String.valueOf(c) ;  //数据类型转换
    				   list.set(0, d);   //替换第一个元素
    				   String step = "sin("+a+")="+c;   //整个过程
    				   resultDisplay.setText(d);
    				   processShow.setText(step);
    				   stepShow.append(""+step+"\n");
    				   list.removeLast();   //移掉第2个运算数
    				   list.removeLast();	  // 移掉运算符号  
    			     }catch(Exception ee) {		
    			    	 
    			      }
    			    }
    			 }
    		   }
    	   
    

    8.OperateSymbol.java

    package keshe;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.LinkedList;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    
    public class OperateSymbol implements ActionListener{
    	   LinkedList<String>  list;
    	   JTextField resultDisplay;        //当前输入与运算结果显示
    	   JTextField processShow;        //显示当前计算过程
    	   JTextArea   stepShow;             // 显示计算步骤整体过程
    	   OperateSymbol(LinkedList<String> list1,JTextField one,JTextField two,JTextArea three) {      //构造方法
    		   list=list1;
    		   resultDisplay=one;
    		   processShow=two; 
    		   stepShow=three;
    	   }
    	   public void actionPerformed(ActionEvent e) {
    		   SymbolButton a=(SymbolButton)e.getSource();
    		   if(list.size()==1) {
    			   String fuhao = a.getFuHao1();
    			   list.add(fuhao);           //添加元素
    			   processShow.setText(""+list.get(0)+""+list.get(1));	
    		   }else if(list.size()==2) {
    			   String fuhao = a.getFuHao1();
    			   list.set(1, fuhao);        //替换指定下标元素;
    			   processShow.setText(""+list.get(0)+""+list.get(1));  //以上为储存第一个运算符号
    		   }else if(list.size()==3) {
    			String num1 = list.getFirst();   //获取第一个数字
    			String num2 = list.getLast();    //获取第二个数字
    			String fuHao = list.get(1);     // 获取运算符号
    			String processStep = num1+""+fuHao+""+num2;
    			try {
    				double n1 = Double.parseDouble(num1);   //字符串转换数据 
    				double n2 = Double.parseDouble(num2);  
    				double result = 0 ;
    		        if(fuHao.equals("+")) {   
    		        	result = n1+n2;
    		        }else if(fuHao.equals("-")) {
    		        	result = n1-n2;
    		        }else if(fuHao.equals("*")) {
    		        	result = n1*n2;
    		        }else if(fuHao.equals("/")) {
    		        	result = n1/n2;
    		        }
    		        String fuhao = a.getFuHao1();
    		        list.clear();  //清除
    		        list.add(""+result);  //把计算结果换成第一个运算数
    		        list.add(fuhao);
    		        String step = processStep+"="+""+list.get(1);
    		        resultDisplay.setText(""+result);      
    		 	    processShow.setText(step);
    		 	    stepShow.append(""+processStep+"="+result+"\n");
    		        
    		      }catch(Exception ee) {				
    			}			
    		 }
    	}
    }
    

    9.OperateZhengFu.java

    package keshe;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.LinkedList;
    import javax.swing.JTextField;
    public class OperateZhengFu implements ActionListener{
    	   LinkedList<String>  list;
    	   JTextField resultDisplay;   //当前输入与运算结果显示
    	   JTextField processShow;      //显示当前计算过程
    	   OperateZhengFu(LinkedList<String> list1,JTextField one,JTextField two) {      //构造方法
    		   list=list1;
    		   resultDisplay=one;
    		   processShow=two; 
    	   }
    	   public void actionPerformed(ActionEvent e) {
    		   if(list.size()==1) {
    			   String a = list.getFirst();  //  获取第一个元素;
    			   try {
    				   double b = Double.parseDouble(a);   //数据类型转换;
    				   b=-1*b;   //换成异号
    				   String c = String.valueOf(b);   //数据类型又换成Sring型
    				   list.set(0, c);
    				   resultDisplay.setText(c);
    				   processShow.setText(""+list.get(0));
    			   }catch(Exception  ee) {
    		    }
    		   }else if(list.size()==3) {
    			   String a = list.getFirst();  //  获取第一个元素;
    			   try {
    				   double b = Double.parseDouble(a);   //数据类型转换;
    				   b=-1*b;   //换成异号
    				   String c = String.valueOf(b);   //数据类型又换成Sring型
    				   list.set(2, c);
    				   resultDisplay.setText(c);
    				   processShow.setText(""+list.get(0)+""+list.get(1)+""+list.get(2));
    			   }catch(Exception  ee) {
    			   }
    		   }
    	   }
    }
    

    10.ShuziButton.java

    package keshe;
    
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class ShuziButton extends JButton{
    	int number;
    	public ShuziButton(int number) {
    		super(""+number);
    		this.number=number;
    		setForeground(Color.orange);
    	}
        public int getNumber() {
        	return number;       //返回数字。
        }
    }
    

    11.SymbolButton.java

    package keshe;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class SymbolButton extends JButton {
    	String fuHao1;
    	public SymbolButton(String s) {
    		super(s);
    		fuHao1=s;
    		setForeground(Color.blue);
    	}
        public String getFuHao1() {
        	return fuHao1;  // 返回符号
        }
    }
    

    总结

    全部源码就上面全部了,写完的话高分可能拿不到,但是过是没问题的。有要UML图的可以留言~~

    要UML图的可以私信我,发邮箱。急的也可以去这下载:https://download.csdn.net/download/luo1831251387/15770017

    展开全文
  • 在html里面写java代码

    千次阅读 2021-06-09 03:35:22
    在html里面写java代码[2021-02-09 11:02:31]简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。...
  • 适合准备入行开发的零基础员学习Java,基于最新JDK13、IDEA平台讲解的,视频中穿插多个实战项目。每一个知识点都讲解的通俗易懂,由浅入深。不仅适用于零基础的初学者,有经验的程序员也可做巩固学习。 一、坦克...
  • java新手入门-java新手代码大全

    千次阅读 2021-02-12 11:18:00
    ​关于学习java知识的过程是漫长的,它的内容丰富又庞大。今天就为大家介绍如何区分java文件字节流和字符流,以及为大家展示读写操作的实例。 下面要给大家介绍的就是和java字符缓冲区输入流BufferedReader类相关的...
  • Java贪吃蛇全代码

    千次阅读 多人点赞 2021-04-26 10:53:56
    Java编写精典小游戏——贪吃蛇! 前言   我想贪吃蛇应该是不少90后和00后的童年(我本人是01年的),回想起从前偷偷拿着我爹的诺基亚在被窝里玩贪吃蛇,不禁感慨万分,时间飞逝,没想到10年后的我也可以自己做一...
  • Java代码写好后怎么运行?

    千次阅读 2021-09-15 10:06:15
    对于很多Java初学者来说,编写好自己的第一个程序能够运行起来是一件非常自豪的事情,那么你知道应该如何才能运行Java代码吗?今天小千就来给大家介绍一下。 Java代码运行方法 1.首先需要确保你的电脑正确安装了Java...
  • JavaParser:Java代码生成

    千次阅读 2021-03-10 03:48:19
    生成Java代码JavaParser。我在javaparser.org或手册中找不到关于代码生成的大量文档。因此,我认为将其解决将有助于想要尝试使用Java解析器的人。在最简单的形式中, JavaParser 库允许您与Java源代码交互,作为Java...
  • Java web 的代码审计 第一篇 Java web 的代码审计 思路
  • Java五子棋全代码

    万次阅读 多人点赞 2020-10-14 13:27:50
    Java编写简单的五子棋 前言    这两天在空闲时间做了个五子棋项目,分享给大家看一下,界面是这样的:        呜呜呜,界面很丑我知道,本人虽有几年PS基础,但知识浅薄,审美观不尽人意,做到如此实属极限...
  • OPSLI 快速开发平台基于springboot、vue、element-ui 、vue-admin-beautiful,项目采用前后端分离架构,热插拔式业务模块与插件扩展性高 ,代码简洁,功能丰富,开箱即用 官网: https://opsli.com 开源地址: ...
  • 黑客帝国里的代码雨-java代码实现

    万次阅读 多人点赞 2018-12-02 11:09:47
    我一直很好奇黑客帝国里的代码雨,感觉很酷,就一直搜集资料,尝试使用Java来实现,终于成功了,分享一下啊  代码雨的实现用到的是jdk自身带的类库,可能很多小伙伴不知道Java安装JDK就可以做C/S(客户/服务器)...
  • Java代码审计之URL重定向

    千次阅读 2022-03-25 22:00:33
    Java代码审计之URL重定向url重定向URLRedirect url重定向漏洞也称url任意跳转漏洞,网站信任了用户的输入导致恶意https://mp.weixin.qq.com/s?__biz=MzI1ODY3MTA3Nw==&mid=2247484100&idx=1&sn=50473ea6...
  • java代码实现网页源码爬取

    千次阅读 多人点赞 2020-12-14 15:42:21
    java代码实现网页源码爬取 java代码基于Eclipse简单实现网页源码爬取 哈哈,大家好!我是yanxiaolxy,前天四级英语考试考完了,作业也不多了,感觉整个人都变得轻松了许多。 今天给大家分享我的最新java学习进程--java...
  • Java 静态代码块详解

    千次阅读 多人点赞 2020-05-31 11:22:14
    静态代码块及多种代码块的相关知识
  • java浪漫代码_30条代码,拿去“表白”

    万次阅读 多人点赞 2020-10-22 00:06:14
    作者 | 程序员客栈来源 |...其实很多时候礼物不一定就需要花钱买,今天我们就用代码来一次表白吧,把你中意的代码发给她,看她能不能看懂,哈哈哈!而它们不是一般的代码,它们是文化...
  • 学习java还是要不断的积累,有必要的话,还是需要大家记忆的,这样更加有利于大家学习java,那么今天我们就给大家分享一些java入门必背代码,希望能够对大家有用!1、把 Java util.Date 转成 sql.Datejava.util....
  • Java代码转C++代码的几点小经验

    千次阅读 2020-12-04 21:44:53
    C++ 和 Java太像了,其实翻译起来 还挺爽快,但有些小坑 知道了可能更好
  • 程序猿如何循序渐进地追到女生?突发奇想,想知道群里那些内向闷骚的单身程序员们,是不是真的不会向女生表达。...最近看到一则Java程序员的表白情书,觉得特别有意思,决定分享给大家,毕竟独乐乐不如众乐乐。程序员...
  • java学生信息管理系统源代码

    千次阅读 2021-03-04 02:18:22
    导读正文本文实例为大家分享java学生信息管理系统的具体代码,实现学生信息: 增加 int[] a=new int[9] 、删除 、查找、更改,供大家参考,具体内容如下/*学生信息管理系统,实现学生信息:*增加 int[] a=new int...
  • 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!...
  • jmeter运行java代码、操作变量

    千次阅读 2019-05-11 11:47:10
    jmeter运行java代码、操作变量 针对jmeter对于需要额外java函数或者类调用时,可以参考本文章(比如post需要算法加密密码时,则可以让开发导出相关类,进行调用返回即可。或者需要针对某些参数进行运算,也可以实现...
  • 本篇文章小编给大家分享一下java实现超市管理系统代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。实现功能使用选择结构,循环结构,数组的知识实现一个...
  • java写一个用户登陆界面的代码分享

    万次阅读 多人点赞 2018-03-14 23:02:43
    Java用户登陆这块,主要还是学到了新的类:1,边界布局:BorderLayout。他主要分为五个布局,是JFrame(顶层容器),JDialog(创建对话框窗口的类)的默认布局方式。其最多容量为5个组件,超出5个得用其他的。设置...
  • java代码怎么连接数据库,超详细教程

    千次阅读 多人点赞 2020-06-02 08:04:13
    java连接数据库jdbc 在连接数库时我们先要将驱动导入idea 详情看以下图片:在idea中将数据库的驱动引进idea 首先我们点击idea左上角的file–...
  • 细数常用的5款Java代码混淆器!

    千次阅读 2020-02-06 16:18:05
    对于Java程序员来说,如果辛辛苦苦写的代码被人摽窃走,将是一件非常恼火的事情。...下面,分享5个常用Java代码混淆器,帮助你保护你的代码。 1、Zelix KlassMaster Zelix KlassMaster是一款用Java写的实用工具,能...
  • java 如何去看懂一段代码?

    千次阅读 2020-04-19 12:17:10
    java day006 一周小结以及如何去看懂一段代码 [外链图片转存 如何去看懂一段代码? 作为初学者,如何去看懂一段代码所表达的意思呢?其实很简单,三个步骤就好了。 1 :流程 如果你要想看懂一段代码,首先你需要直到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 412,329
精华内容 164,931
关键字:

优秀的java代码分享

java 订阅