• java语言基础第三讲作业


    一:编写一个程序,用户输入两个数,求出其加减乘除,并用消息框显示计算结果。

    源代码如下:

    package suanfa;
    import javax.swing.JOptionPane;
    
    public class suanfa {
        public static void main(String[] args)
        {
            String firstNumber,secondNumber;
            int number1,number2;
            int add,subjian,mulcheng,divchu;
            firstNumber = JOptionPane.showInputDialog
                    ("input the first integer please");
            secondNumber = JOptionPane.showInputDialog
                    ("inout the second integer please");
            number1 = Integer.parseInt(firstNumber);
            number2 = Integer.parseInt(secondNumber);
            add = number1 + number2;
            subjian = number1 - number2;
            mulcheng= number1 * number2;
            divchu = number1 / number2;
            JOptionPane.showMessageDialog(null, "number1 + number2 is "
                    +add+"\nnumber1 - number2 is "+subjian+"\nnumber1 *"
                            + " number2 is "+mulcheng+"\nnumber1 / number2 is "+divchu
                            ,"Results", JOptionPane.PLAIN_MESSAGE);
        }
    }

    截图如下:

    二:解决课程中的所有动手动脑的问题以及课后实验性的问题

    1-EnumTest .java

    package EnumTest;
    
    public class EnumTest {
    public static void main(String[] args) {
    
    Size s=Size.SMALL;
    
    Size t=Size.LARGE;
    
    //s和t引用同一个对象?
    
    System.out.println(s==t);  //
    
    //是原始数据类型吗?
    
    System.out.println(s.getClass().isPrimitive());
    
    //从字符串中转换
    
    Size u=Size.valueOf("SMALL");
    
    System.out.println(s==u);  //true
    
    //列出它的所有值
    
    for(Size value:Size.values()){
    
    System.out.println(value);
    
    }
    
    }
    
     
    
    }
    
     enum Size{SMALL,MEDIUM,LARGE};
    
     

    截图如下:

    输出结果:false  false  true  SMALL MEDIUM LARGE

    总结:枚举类型相当于一个定义的名为enum的类,例如本程序中,enum SIZE {SAMLL,MEDIUM,LARGE};意思就是定义一个名为SIZE的枚举类型,它可以在SMALL,MEDIUM,LARGE三个元素中取一个值。然后使用时就用SIZE s=SIZE.SMALL这种形式,相当于定义一个SIZE类型的变量s,因为sSIZE类型的,所以这个s只能有SMALL,MEDIUM,LARGE三个值中的一个。给枚举类型变量赋值也可以直接调用valueOf()函数从字符串中转换。但是在使用枚举类型enum的对象SIZE之前需要有enum Size{SMALL,MEDIUM,LARGE}这样一句话给SIZE规定取值集合。

    javac编译这个程序的时候会生成2class文件,说明enum Size{SMALL,MEDIUM,LARGE};相当于定义了一个class

    可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的

     2-Addition.java

    package Addition;
    //An addition program 
    import javax.swing.JOptionPane;  // import class JOptionPane
    public class Addition {
    
    public static void main( String args[] )
    
    {
    
       String firstNumber,   // first string entered by user
    
              secondNumber;  // second string entered by user
    
       int number1,          // first number to add
    
           number2,          // second number to add
    
           sum;              // sum of number1 and number2
    
    
    
       // read in first number from user as a string
    
       firstNumber =
    
          JOptionPane.showInputDialog( "Enter first integer" );
    
    
    
       // read in second number from user as a string
    
       secondNumber =
    
          JOptionPane.showInputDialog( "Enter second integer" );
    
    
    
       // convert numbers from type String to type int
    
       number1 = Integer.parseInt( firstNumber ); 
    
       number2 = Integer.parseInt( secondNumber );
    
    
    
       // add the numbers
    
       sum = number1 + number2;
    
    
    
       // display the results
    
       JOptionPane.showMessageDialog(
    
          null, "The sum is " + sum, "Results",
    
          JOptionPane.PLAIN_MESSAGE );
    
    
    
       System.exit( 0 );   // terminate the program
    
    }
    
    }

    从结果可以看到,因为程序中调用Integer类的方法将string类型变量转化为int类,所以如果我在输入框中输入一个小数14.0和2.5就会报错。

    总结:这个例子主要是学会了对话框的使用。通过JOptionPane类的两个method,即showInputDialog和showMessageDialog的简单调用,示范了对话框的基本用法。

    而且由于我对JOptionPane并不熟悉,不知道里面有什么函数和接口,以及哪些函数需要给哪些参数,功能是什么,返回值是什么等等,所以需要上网查JDK 1.8 API。在这个过程中我大致学会了怎样查看API说明文档,说明文档里面有比较详细的说明每个函数和接口的使用,而且有些还有example。因为是英文的所以我还专门下载了一个有道词典桌面版,用于屏幕划词翻译。

    3-TestDouble.java

    package TestDouble;
    
    public class TestDouble{
    
        public static void main(String args[]) {
    
            System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));
    
            System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));
    
            System.out.println("4.015 * 100 = " + (4.015 * 100));
    
            System.out.println("123.3 / 100 = " + (123.3 / 100));
    
        }
    
    }

    果分析:double类型的数据存储方式决定了它在运算时会得不到精确的结果。解决方法:

    在执行double类型的数据的运算时,每进行一布计算就将其强制转化成其他数据类型;或者在表示两个double类型的数据相等的时候用“两数之差的绝对值小于某个特别小的数”,比如10e-6来表示。

    package TestBigDecial;
    import java.math.BigDecimal;
    
    public class TestBigDecimal
    
    {
    
    public static void main(String[] args) 
    
    {
    
    BigDecimal f1 = new BigDecimal("0.05");
    
    BigDecimal f2 = BigDecimal.valueOf(0.01);
    
    BigDecimal f3 = new BigDecimal(0.05);
    
    System.out.println("下面使用String作为BigDecimal构造器参数的计算结果:");
    
    System.out.println("0.05 + 0.01 = " + f1.add(f2));
    
    System.out.println("0.05 - 0.01 = " + f1.subtract(f2));
    
    System.out.println("0.05 * 0.01 = " + f1.multiply(f2));
    
    System.out.println("0.05 / 0.01 = " + f1.divide(f2));
    
    System.out.println("下面使用double作为BigDecimal构造器参数的计算结果:");
    
    System.out.println("0.05 + 0.01 = " + f3.add(f2));
    
    System.out.println("0.05 - 0.01 = " + f3.subtract(f2));
    
    System.out.println("0.05 * 0.01 = " + f3.multiply(f2));
    
    System.out.println("0.05 / 0.01 = " + f3.divide(f2));
    
    }
    
    }

    由此可见,构建BigDecimal对象可以解决不精确的问题。但是使用时应使用字符串而不是double数值,否则,仍有可能引发计算精度问题

    4-字符串连接操作

    package plus;
    
    
    public class Plus {
    
        public static void main(String[] args)
    
        {
    
    int X=100;
    
    int Y=200;
    
    System.out.println("X+Y="+X+Y);
    
    System.out.println(X+Y+"=X+Y");
    
        }
    
    }

    分析:在System.out.println()中,如果在string字符串后面是+和变量,会把变量转换成string类型,加号起连接作用,然后把两个字符串连接成一个新的字符串输出;如果先有变量的加减运算再有字符串,那么会从左到右先计算变量的加减,然后再与后面的string结合成一个新的字符串。也就是说加号只有在两个string类型或者其中一个是string类型的时候才起到连接作用,否则仍然是运算符。

    三:写一个自动生成验证码的程序

    源代码如下:

    package PandomStr;
    
    
    
    
    import javax.swing.JOptionPane;
    
    public class RandomStr {
    //    public void createRandomStr(int weishu)
    //    {
    //        String str = "";
    //        for(int i=1;i<=weishu;i++)
    //        {
    //            //生成一个表示a~z的ASCII的随机数
    //            int intValue = (int)(Math.random()*26+97);
    //            //将此随机数转化为其对应的字母并连接在str后面
    //            str = str + (char)intValue;
    //        }
    //    }
    
        public static void main(String[] args) {
        //生成一个6位的由小写字母组成的随机字符串    
            int weishu=6;
            String str = "";
            for(int i=1;i<=weishu;i++)
            {
                //生成一个表示a~z的ASCII的随机数
                int intValue = (int)(Math.random()*26+97);
                //将此随机数转化为其对应的字母并连接在str后面
                str = str + (char)intValue;
            }
        //随机字符串生成完毕
            String inputStr;
            inputStr = JOptionPane.showInputDialog("请输入以下验证码\n"+str);
            if(inputStr.equals(str))
            {
                JOptionPane.showMessageDialog(null, "验证成功");
            }
            else
            {
                JOptionPane.showMessageDialog(null, "抱歉,验证失败");
            }
        }
    
    }

  • 相关阅读:
    分布式设计与开发(一)------宏观概述
    分布式设计与开发(二)------几种必须了解的分布式算法
    分布式设计与开发(三)------高一致性服务ZooKeeper
    jvm工作原理
    JVM原理和优化
    分布式系统设计原理与方案
    在Linux上安装Memcached服务
    使用Memcached、Spring AOP构建数据库前端缓存框架
    Java使用memcached
    Memcache的部署和使用
  • 原文地址:https://www.cnblogs.com/hongniuke/p/4857794.html
Copyright © 2020-2023  润新知