动手动脑(1)

1.枚举值的foreach迭代

 

 

 

通过该程序运行结果可知:枚举类是一种特殊的类,不是原始数据类型,。枚举类型是引用类型它的每个具体值都引用一个特定的对象,相同的值则引用同一个对象。

2.两数相加

// 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

   }

}

 

运行结果:

 

 

 

 

 

 

 

 

 

 

 

 

3.Java中的类型转换

 

默认转换:容量小的类型转化成容量大的类型,可能会出现数据丢失问题,也要小心数据溢出的问题。

强制转换:容量大的类型转化成容量小的类型

4.Double类型数据运算不精确

 

 

 

 

原因:计算机算术是二进制的,十进制编组二进制是无限循环小数,需要截断,因此会产生一定的误差。

解决方法:

 

 

 

 

 

5.

 

 

 

 

第一个输出由于第一个”+”两边一个是字符串,一个是整型变量,变成了字符串的连接,是将“X+Y”,X变量,Y变量连接成一个字符串输出;

第二个输出先进行数学运算,然后进行字符串的连接。

  1. 课堂测试

题目要求:写一个自动生成小学四年级运算题目的“软件”,题目避免重复,可定制数量/打印方式。

解题主要思路:1)参与运算的数和运算符都通过获取不同范围的随机数的方法获取。

2) 利用逻辑运算判断获取的运算数和运算符是否满足题目中所要求的题目要求

3) 遍历查重

源代码:

Operating.java

import java.lang.Math;

public class Operating {

private static int firstNumber;     //第一个操作数

private static  int SecondNumber;   //第二个操作数

private static String operator;    //四则运算运算符

 

//生成两个随机数

public int firstNum()

{

 return firstNumber=(int)(1+Math.random()*99);  //获取100以内的随机数

}

public int secondNum()

{

return  SecondNumber=(int)(1+Math.random()*99);  //获取100以内的随机数

}

 

//返回操作符

public String operator(){

        int n;

        n = (int)(1+Math.random()*3);//1~4对应不同的运算符

        switch(n){

            case 1:

                operator = "+";

                break;

            case 2:

                operator = "-";

                break;

            case 3:

                operator = "*";      

                break;

            case 4:

                operator = "/";     

                break;

            default:

                break;

        }   

        return operator;     

    }   

 

//用于返回算数题目表达式

public String expression()       

{  //获取两个可参与运算的数

   int a=firstNum();

   int b=secondNum();  

   String oprt=new String();

   oprt=operator();

   if(oprt == "+"&&a+b<100)

{ return a+oprt+b;

}

else if(oprt == "-"&&a-b>0)   

   { return a+oprt+b;

   }

else if(oprt == "-"&&a-b<0)   

   { return b+oprt+b;

   }

 

else if(oprt== "*"&&a*b<100)

   { return a+oprt+b;

   }

else if(oprt == "/"&&(a/b==0)&&b!=0)

   return a+oprt+b;

else return null;

}

}

 

operatingTest.java

  import java.util.Scanner;

public class operatingTest {

 

public static void main(String[] args) {

// TODO 自动生成的方法存根

String expree[]=new String[200000];     //此数组用于存储算数题目的表达式

        Operating opera = new Operating();

        expree[0]=opera.expression();

        Scanner in=new Scanner(System.in);     

        System.out.println("请输入题目总数:");

       int  a=in.nextInt(); //获取总数

     System.out.println("请输入每行题目个数:");

        int b=in.nextInt();  // 每行

        for(int i=1;i<a;i++){

            boolean flag = true;

            while(flag){          

                String str = opera.expression();

                int gg = 0;      

                //遍历表达式数组expree,查重   

                for(int k=0;k<i;k++){         

                    if(str == expree[k]){

                        break;

                    }else{    

                        gg++;

                    }    

                }   

                //如果之前所有的都没重复则添加到数组

                if(gg == i){    

                    flag = false;   

                    expree[i] = str;

                }

            }          

        }

        int k=0;  //用于确定是否换行

        for(int i=0;i<a;i++)

        {   

         if(k%b==0)

         System.out.println();

         {

         k++;

         //输出带有题号的表达式

            System.out.print(i+1+"."+" "+expree[i]+"="+" ");                                                       

         }

        }

}

}

运行结果:

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-09-20 07:42  祈欢  阅读(192)  评论(0编辑  收藏  举报