Java语法基础课后作业

1、动手动脑

运行它EnumTest.java,分析运行结果

s和t分别引用的是SMALL和LARGE,枚举类型不是原始数据类型,s和u的赋值方式不同,但结果一样,列出它的所有值:SMALL,MEDIUM,LARGE。

2、枚举类型的基本用法

枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。 可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。

3、补码、原码和反码

反码:反码的表示方法是:正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.
补码:补码的表示方法是:正数的补码就是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1.
4.为什么double类型的数值进行运算得不到数学上精确的结果

这个涉及到二进制与十进制的转换问题。
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次方)。

5、以下代码的输出结果是什么?

int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);在这+表示为连接符
System.out.println(X+Y+"=X+Y");在这第一个+表示相加,第二个+表示为连接符
为什么会有这样的输出结果?
+在不同的情况下表达不同的含义,比如在第一行输出代码中表达连接符,而在第二行中表达相加和连接符。
6、加减乘除
import javax.swing.JOptionPane;  // import class JOptionPane

public class Test5 {
   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
          subtraction,      // subtraction of number1 and number2
          product,          // product of number1 and number2
          division = 0;         // division of number1 and number2

      // read in first number from user as a string
      firstNumber =
         JOptionPane.showInputDialog( "输入第一个数" );

      // read in second number from user as a string
      secondNumber =
         JOptionPane.showInputDialog( "输入第二个数" );

      // convert numbers from type String to type int
      number1 = Integer.parseInt( firstNumber ); 
      number2 = Integer.parseInt( secondNumber );

      // add the numbers
      sum = number1 + number2;
      
      //multiply the numbers
      product = number1 * number2;
      
      //divide the numbers
      if( number2 == 0 )
          JOptionPane.showMessageDialog(
                     null, "分母为零,无法计算两数相除", "Results",
                     JOptionPane.PLAIN_MESSAGE );
      else
          division = number1 / number2;
      
      //minus the numbers
      subtraction = number1 - number2;
      

      // display the results
      JOptionPane.showMessageDialog(
         null, "The sum is " + sum 
         + " 
The subtraction is " + subtraction 
         + " 
The product is " + product
         + " 
The division is " + division, "Results",
         JOptionPane.PLAIN_MESSAGE );

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

仿照例子写出减乘除,弹窗提示。

7、验证码

程序源码:

import javax.swing.JOptionPane;

public class Test6 {
    
    public static void main(String[] args) 
    {
        //定义一个空字符串
        String result = "";
        String Input = "";
        
        //进行6次循环
        for(int i = 0 ; i < 6 ; i ++)
        {
            //生成一个97~122的int型的整数
            int intVal = (int)(Math.random() * 26 + 97);
            //将intValue强制转换为char后连接到result后面
            result = result + (char)intVal;
        }
       
//输出验证码 JOptionPane.showMessageDialog(
null, "验证码:" + result, "Results", JOptionPane.PLAIN_MESSAGE );
//用户输入验证码 Input
= JOptionPane.showInputDialog( "输入验证码" );
//判断是否一致
if(Input.equals(result)) JOptionPane.showMessageDialog( null, "验证码输入正确", "Results", JOptionPane.PLAIN_MESSAGE ); else JOptionPane.showMessageDialog( null, "Error", "Results", JOptionPane.PLAIN_MESSAGE ); } }

程序流程图:

运行结果:

原文地址:https://www.cnblogs.com/a1264393659/p/4860103.html