第一题:
//在消息框中输入两个数,并用消息框显示出两个数的加减乘除的结果 import javax.swing.JOptionPane; public class Calculator { public static void main(String args[]) { String firstNumber,secondNumber; int number1,number2,sum,minus,plus,divide; firstNumber=JOptionPane.showInputDialog("请输入第一个数字:"); secondNumber=JOptionPane.showInputDialog("请输入第二个数字:"); number1=Integer.parseInt(firstNumber); number2=Integer.parseInt(secondNumber); //计算出两个数字的加减乘除的结果 sum=number1+number2; minus=number1-number2; plus=number1*number2; divide=number1/number2; JOptionPane.showMessageDialog(null,"两个数的和为:"+sum +","+"两个数的差为:"+minus +","+"两个数的积为:"+plus +","+"两个数的商为:"+divide,"结果",JOptionPane.PLAIN_MESSAGE); System.exit(0); } }
第二题:
①EnumTest.java结果:
False
False
True
SMALL
MEDIUM
LARGE
第一个结果是在比较两者是否相同,第二个是判断是否为基本类型,第三个是赋值并进行比较,后面三个是将所有数值一次输出的结果。
enum可用来创建一个枚举类型,枚举类型属于引用类型,枚举不属于原始的数据类型,每个具体值都会引用枚举里的一个对象,可使用“==”和“equals()”来判断两个值是否相等。
②在计算机内,定点数有3种表示法:原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。
所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
同名变量的屏蔽原则,就是指变量的会根据离他最近的赋值来获得数值,而关系较弱,相距较远的赋值会不起作用。
③Double得到的结果不精确,主要归因于浮点数在计算中的表示方法,浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示某个实数,这个实数由有一个整数或定点数乘以某个基数的整数次幂得到,无法精确地保存浮点数字实际的大小。
解决方法:可以使用java.math.BigDecimal来计算,使用其中的加减乘除的函数,得到的结果会更加精确一些,除法除不尽的话,会保留10位后进行四舍五入。
④
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”的结果,故结果不相同。