课后作业-2

package 课后练习;

public class 课后练习01 {   //EnumTet
 public static void main(String[] args) {
     Size s=Size.SMALL;
     Size t=Size.LARGE;
     System.out.println(s==t);
     System.out.println(s.getClass().isPrimitive());//Object类中包含一个方法名叫getClass,利用这个方法就可以获得一个实例的类型类;isPrimitive()此方法主要用来判断Class是否为原始类型
     Size u=Size.valueOf("SMALL");//valueOf()方法: 这个方法和toString方法是相对应的,返回带指定名称的指定枚举类型的枚举常量,返回Size.SMALL
     System.out.println(s==u);
     for(Size value:Size.values()) {
         System.out.println(value);
     }
 }
}
enum Size{SMALL,MEDIUM,LARGE};//enum很像特殊的class,实际上enum声明定义的类型就是一个类。

运行结果为:false、false、true、SMALL、MEDIUM、LARGE

运行结果的分析:首先比较s和t的地址值是否一样,不一样运行结果为false;然后得到Size的类类型,然后判断其是否为原始类,因为它不是,所以运行结果为false;然后运用valusOf方法把SMALL赋给u,然后比较s和u的地址值是否一样,因为运用了此方法,所以他们两个的地址值一样,所以运行结果为true;
最后输出了Size中的SMALL、MEDIUM、LARGE。
枚举类型的基本用法:
有了枚举,可以把相关的常量分组到一个枚举类型里,每当需要一组固定的常量的时候,就可以使用枚举类型。
package 课后练习;
import javax.swing.JOptionPane;  
public class 课后练习02 {//addition
    public static void main( String args[] )
       {
          String firstNumber;   
          String     secondNumber;  
          int   number1;         
          int   number2;         
          int   sum;             
          firstNumber =
             JOptionPane.showInputDialog( "Enter first integer" );//JOptionPane.showInputDialog方法返回用户输入的字符串。
          secondNumber =
             JOptionPane.showInputDialog( "Enter second integer" );

          number1 = Integer.parseInt( firstNumber ); //Integer.parseint()就是把整形对象Integer转换成基本数据类型int(整数)。

          number2 = Integer.parseInt( secondNumber );
   
          sum = number1 + number2;
      
          JOptionPane.showMessageDialog(
             null, "The sum is " + sum, "Results",
             JOptionPane.PLAIN_MESSAGE );

          System.exit( 0 );   
       }
    }
使用两个输入框输入数据,使用一个输出框显示结果。
分析:JOptionPane.showInputDialog方法返回用户输入的字符串,生成输入框,并在输入框上显示输入的信息;在第一个输入框中输入number1,在第二个输入框中输入number2
System.exit(0)是正常退出程序
package 课后练习;
import java.util.*;

public class 课后练习03 {
public static void main(String[]args) {

         Scanner in = new Scanner(System.in);
  
          System.out.print("What is your name? ");
          String name = in.nextLine();
  
          System.out.print("How old are you? ");
          int age = in.nextInt();
        
          System.out.println("Hello, " + name + ". Next year, you'll be " + (age + 1));
      
       }
    
}

先后输入名字和年龄,然后输出。

package 课后练习;

public class 课后练习04 {
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));
}
}

运行后的结果为:

0.05+0.01=0.060000000000000005
1.0-0.42=0.5800000000000001
4.015*100=401.49999999999994
123.3/100=1.2329999999999999

我发现每一个结果都不是精确值,都与正确的结果有着一定的出入。原因是:

使用double类型的数值进行斤算,其结果是不精确的,double类型的数值进行运算得不到“数学上精确”得结果,因为double为双精度,占64个字节即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据产生误差,在上面代码中我们需要比64位更多的位才能精确的表示出来。
package 课后练习;

public class 课后练习05 {
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");
}
}

结果:

x+y=100200
300=x+y

第一个,“x+y="+x+y因为引号在前面,就会被当成几个字符串的加法,就是把几个连起来,所以最终的结果就是x+y=100200;

第二个,x+y+"=x+y"因为引号在后面,就先计算x+y的加法,所以结果为300=x+y;

猜你喜欢

转载自www.cnblogs.com/zhaoxinhui/p/9747876.html