Java理论学时第二节。课后作业。

时间:2023-03-09 06:32:11
Java理论学时第二节。课后作业。

Java理论学时第二节。课后作业。

Java理论学时第二节。课后作业。

枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象,相同的值则引用同一个对象。

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

Java理论学时第二节。课后作业。Java理论学时第二节。课后作业。

在输出中,先出现” ”的话,后面的加号被理解成字符串相加。

”X + Y”+ (X +Y) 与 X + Y = ”X + Y”相同。

为什么double类型的数值进行运算得不到“数学上精确”的结果?

Java理论学时第二节。课后作业。

这个涉及到二进制与十进制的转换问题。
N进制可以理解为:数值×基数的幂,如十进制数为123.4=1×10²+2×10+3×(10的0次幂)+4×(10的-1次幂);而二进制数11.01=1×2+1×(2的0次幂)+0+1×(2的-2次幂)=十进制的3.25。
double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。
简单来说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。

package Sum;
import javax.swing.JOptionPane; // import class JOptionPane

public class Addtion
{
  public static void main(String[] args)
  {
    String firstNumber,secondNumber; // first and second string entered by user
    int number1,number2;// first and second number to add
    double sum,poor,mul,div; // sum,poor,multiply,division 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);

    // count the numbers
    sum = number1 + number2;
    poor = number1 - number2;
    mul = number1 * number2;
    div = number1 / number2;

    // display the results
    JOptionPane.showMessageDialog(null, "The sum is " + sum, "Results",JOptionPane.PLAIN_MESSAGE );
    JOptionPane.showMessageDialog(null, "The poor is " + poor, "Results",JOptionPane.PLAIN_MESSAGE );
    JOptionPane.showMessageDialog(null, "The multiply is " + mul, "Results",JOptionPane.PLAIN_MESSAGE );
    JOptionPane.showMessageDialog(null, "The division is " + div, "Results",JOptionPane.PLAIN_MESSAGE );

    System.exit( 0 ); // terminate the program
  }
}