zoukankan      html  css  js  c++  java
  • 201771010101 白玛次仁 《2018面向对象程序设计(Java)》第十周学习总结

    实验十  泛型程序设计技术

    实验时间 2018-11-1

    学习总结

    泛型:也称参数化类型(parameterized type),就是在定义类、接口和方法时,通过类型参数指示将要处理的对象类型。(如ArrayList类)

    泛型程序设计(Generic programming):编写代码可以被很多不同类型的对象所重用。

    一个泛型类(generic class)就是具有一个或多个类型变量的类,即创建用类型作为参数的类。

    如一个泛型类定义格式如下:

    class Generics<K,V>其中的K和V是类中的可变类型参数。

    Pair类引入了一个类型变量T,用尖括号(<>)括起来,并放在类名的后面。

    泛型类可以有多个类型变量

    泛型方法可以声明在泛型类中,也可以声明在普通类中。

    NumberGeneric类所能处理的泛型变量类型需和Number有继承关系;

    extends关键字所声明的上界既可以是一个类,也可以是一个接口。

    通过使用super关键字可以固定泛型参数的类型为某种类型或者其超类。

    泛型类可扩展或实现其它的泛型类。

    T表示一种未知类型,而“?”表示任何一种类型。

    单独的?,用于表示任何类型。

     ? extends type,表示带有上界。

     ? super type,表示带有下界。

    定义一个泛型类时,在“<>”内定义形式类型参数,

    例如:“class TestGeneric<K, V>”,其中“K” , “V”不代表值,而是表示类型。

    l 实例化泛型对象的时候,一定要在类名后面指定类型参数的值(类型),一共要有两次书写。例如:

    TestGeneric<String, String> t=new TestGeneric<String, String>();

    l 泛型中<T extends Object>, extends并不代表继承,它是类型范围限制。泛型类不是协变的。

     

    1、实验目的与要求

    (1) 理解泛型概念;

    (2) 掌握泛型类的定义与使用;

    (3) 掌握泛型方法的声明与使用;

    (4) 掌握泛型接口的定义与实现;

    (5)了解泛型程序设计,理解其用途。

    2、实验内容和步骤

    实验1 导入第8章示例程序,测试程序并进行代码注释。

    测试程序1:

    编辑、调试、运行教材311312 代码,结合程序运行结果理解程序;

    在泛型类定义及使用代码处添加注释;

    掌握泛型类的定义及使用。 

    package pair1;

    /**

     * @version 1.01 2012-01-26

     * @author Cay Horstmann

     */

    public class PairTest1

    {

       public static void main(String[] args)

       {

          String[] words = { "Mary", "had", "a", "little", "lamb" };

          Pair<String> mm = ArrayAlg.minmax(words);

          System.out.println("min = " + mm.getFirst());

          System.out.println("max = " + mm.getSecond());

       }

    }

       class ArrayAlg

    //泛型类

    {

       /**

        * Gets the minimum and maximum of an array of strings.

        * @param a an array of strings

        * @return a pair with the min and max value, or null if a is null or empty

        */

       public static Pair<String> minmax(String[] a)

    //用泛型Pair类

       {

          if (a == null || a.length == 0) return null;

          String min = a[0];

          String max = a[0];

          for (int i = 1; i < a.length; i++)

          {

             if (min.compareTo(a[i]) > 0) min = a[i];

             if (max.compareTo(a[i]) < 0) max = a[i];

          }

          return new Pair<>(min, max);

       }

    }

    package pair1;

    /**

     * @version 1.00 2004-05-10

     * @author Cay Horstmann

     */public class Pair<T>

    //Pair类引入了一个类型变量T,用尖括号(<>)括起来,并放在类名的后面。{

       private T first;   

    private T second;    

    public Pair() {

    first = null; second = null;

    }   

    public Pair(T first, T second) {

    this.first = first;  this.second = second;

    }    

    public T getFirst() {

    return first;

     public T getSecond() { return second;

    }   

     public void setFirst(T newValue) { first = newValue;

    }   

    public void setSecond(T newValue) {

    second = newValue;

    }}

    测试程序2

    编辑、调试运行教材315 PairTest2,结合程序运行结果理解程序;

    在泛型程序设计代码处添加相关注释;

    泛型方法、泛型变量限定的定义及用途。

    package pair2;import java.time.*;

    /** 

    * @version 1.02 2015-06-21

     * @author Cay Horstmann 

    */public class PairTest2{   

    public static void main(String[] args)   { 

         LocalDate[] birthdays =          {       

          LocalDate.of(1906, 12, 9), // G. Hopper          

      LocalDate.of(1815, 12, 10), // A. Lovelace       

         LocalDate.of(1903, 12, 3), // J. von Neumann         

       LocalDate.of(1910, 6, 22), // K. Zuse       

      };    

      Pair<LocalDate> mm = ArrayAlg.minmax(birthdays);   

       //Pair中定义一个LocalDate类的birthdays数组    

      System.out.println("min = " + mm.getFirst());    

      System.out.println("max = " + mm.getSecond()); 

      }}

    class ArrayAlg//泛型类ArrayAlg{  

     /**      Gets the minimum and maximum of an array of objects of type T.    

      @param a an array of objects of type T    

      @return a pair with the min and max value, or null if a is       null or empty

       */   public static <T extends Comparable> Pair<T> minmax(T[] a)    //使用extends关键字,定义泛型变量的上界,调用Comparable接口   

    {      

    if (a == null || a.length == 0) return null;     

     T min = a[0];      T max = a[0];     

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

          if (min.compareTo(a[i]) > 0) min = a[i];      

       if (max.compareTo(a[i]) < 0) max = a[i];     

     }     

     return new Pair<>(min, max); 

      }

    }

    package pair2;

    /**

     * @version 1.00 2004-05-10

     * @author Cay Horstmann

     */

    public class Pair<T>

    {

       private T first;

       private T second;

       public Pair() { first = null; second = null; }

       public Pair(T first, T second) { this.first = first;  this.second = second; }

       public T getFirst() { return first; }

       public T getSecond() { return second; }

       public void setFirst(T newValue) { first = newValue; }

       public void setSecond(T newValue) { second = newValue; }

    }

     

    测试程序3

    用调试运行教材335 PairTest3,结合程序运行结果理解程序;

    了解通配符类型的定义及用途。

    package pair3;

    /**

     * @version 1.01 2012-01-26 

    * @author Cay Horstmann 

    */public class PairTest3{ 

      public static void main(String[] args)   {  

        Manager ceo = new Manager("Gus Greedy", 800000, 2003, 12, 15);   

       Manager cfo = new Manager("Sid Sneaky", 600000, 2003, 12, 15);    

      Pair<Manager> buddies = new Pair<>(ceo, cfo);      

          printBuddies(buddies);      

     ceo.setBonus(1000000); 

         cfo.setBonus(500000);    

      Manager[] managers = { ceo, cfo };    

       Pair<Employee> result = new Pair<>();     

     minmaxBonus(managers, result);      

    System.out.println("first: " + result.getFirst().getName()          + ", second: " + result.getSecond().getName());   

       maxminBonus(managers, result);    

      System.out.println("first: " + result.getFirst().getName()          + ", second: " + result.getSecond().getName()); 

      }    

    public static void printBuddies(Pair<? extends Employee> p)   {     

     Employee first = p.getFirst();   

       Employee second = p.getSecond(); 

         System.out.println(first.getName() + " and " + second.getName() + " are buddies.");  

     }    

    public static void minmaxBonus(Manager[] a, Pair<? super Manager> result)   {      

    if (a.length == 0) return;      Manager min = a[0];   

       Manager max = a[0];      for (int i = 1; i < a.length; i++)      {  

           if (min.getBonus() > a[i].getBonus()) min = a[i];        

     if (max.getBonus() < a[i].getBonus()) max = a[i];   

       }     

     result.setFirst(min);   

       result.setSecond(max); 

      }   

     public static void maxminBonus(Manager[] a, Pair<? super Manager> result)   {   

       minmaxBonus(a, result);      

    PairAlg.swapHelper(result);

    // OK--swapHelper captures wildcard type   }   

    // Can't write public static <T super manager> ...}class PairAlg{   public static boolean hasNulls(Pair<?> p)   {   

       return p.getFirst() == null || p.getSecond() == null;   }    public static void swap(Pair<?> p) { swapHelper(p);

    }    

    public static <T> void swapHelper(Pair<T> p)   {      

    T t = p.getFirst(); 

         p.setFirst(p.getSecond());      p.setSecond(t);   

    }}

    package pair3;

    /** * @version 1.00 2004-05-10

     * @author Cay Horstmann

    */public class Pair<T> { 

      private T first;   private T second;    public Pair() { first = null; second = null;

    }   

    public Pair(T first, T second) { this.first = first;  this.second = second;

    }    

    public T getFirst() { return first;

    }  

     public T getSecond() { return second;

    }   

     public void setFirst(T newValue) { first = newValue;

    }   

    public void setSecond(T newValue) { second = newValue;

    }}

    package pair3;

    import java.time.*;public class Employee{   

      private String name;   

    private double salary; 

      private LocalDate hireDay;  

      public Employee(String name, double salary, int year, int month, int day)   {  

        this.name = name;  

        this.salary = salary;   

       hireDay = LocalDate.of(year, month, day);  

     } 

       public String getName()   {    

      return name; 

      }   

     public double getSalary()   {  

          return salary;   

    }    public LocalDate getHireDay()   {   

         return hireDay;

       }    public void raiseSalary(double byPercent)   {  

          double raise = salary * byPercent / 100;   

       salary += raise; 

      }}

    package pair3;

    public class Manager extends Employee{  

       private double bonus;   

     /**      @param name the employee's name     

     @param salary the salary   

       @param year the hire year      

    @param month the hire month 

         @param day the hire day 

      */   public Manager(String name, double salary, int year, int month, int day)   {

           super(name, salary, year, month, day);     

     bonus = 0;   }    public double getSalary()   {   

        double baseSalary = super.getSalary();     

     return baseSalary + bonus; 

      }    public void setBonus(double b)   {     

       bonus = b;  

     }    public double getBonus()   {     

       return bonus;  

     }

    }

    实验2编程练习:

    编程练习1:实验九编程题总结

    实验九编程练习1总结(从程序总体结构说明、模块说明,目前程序设计存在的困难与问题三个方面阐述)。

    实验九编程练习2总结(从程序总体结构说明、模块说明,目前程序设计存在的困难与问题三个方面阐述)。

    编程练习2:采用泛型程序设计技术改进实验九编程练习2,使之可处理实数四则运算,其他要求不变。

    package XOI;
    import java.util.Random;
    import java.util.Scanner;

    import java.io.FileNotFoundException;

    import java.io.PrintWriter;

    public class Main{
        public static void main(String[] args)
        {
            
            yunsuan counter=new yunsuan();//与其它类建立联系
        PrintWriter out=null;
        try {
            out=new PrintWriter("D:/text.txt");//将文件里的内容读入到D盘名叫text
             
        }catch(FileNotFoundException e) {
            System.out.println("文件找不到");
            e.printStackTrace();
        }
        
        
        int sum=0;

        for(int i=0;i<10;i++)
        {
        int a=new Random().nextInt(100);
        int b=new Random().nextInt(100);
        Scanner in=new Scanner(System.in);
        //in.close();
        
        switch((int)(Math.random()*4))
        
        {
        
        case 0:
            System.out.println( ""+a+"+"+b+"=");
            
            int c1 = in.nextInt();
            out.println(a+"+"+b+"="+c1);
            if (c1 == counter.plus(a, b)) {
                sum += 10;
                System.out.println("答案正确");
            }
            else {
                System.out.println("答案错误");
            }
            
            break ;
        case 1:
            if(a<b)
                            {
                                     int temp=a;
                                     a=b;
                                     b=temp;
                                 }//为避免减数比被减数大的情况

             System.out.println(""+a+"-"+b+"=");
             /*while((a-b)<0)
             {  
                 b = (int) Math.round(Math.random() * 100);
                 
             }*/
            int c2 = in.nextInt();
            
            out.println(a+"-"+b+"="+c2);
            if (c2 == counter.minus(a, b)) {
                sum += 10;
                System.out.println("答案正确");
            }
            else {
                System.out.println("答案错误");
            }
             
            break ;
        
          

        
        case 2:
            
             System.out.println(""+a+"*"+b+"=");
            int c = in.nextInt();
            out.println(a+"*"+b+"="+c);
            if (c == counter.multiply(a, b)) {
                sum += 10;
                System.out.println("答案正确");
            }
            else {
                System.out.println("答案错误");
            }
            break;
        case 3:
            
            
             
            while(b==0)
            {  b = (int) Math.round(Math.random() * 100);//满足分母不为0
            }
            while(a%b!=0)
            {
                  a = (int) Math.round(Math.random() * 100);
                  b = (int) Math.round(Math.random() * 100);
            }
            System.out.println(""+a+"/"+b+"=");
         int c0= in.nextInt();
        
         out.println(a+"/"+b+"="+c0);
         if (c0 == counter.divide(a, b)) {
             sum += 10;
             System.out.println("答案正确");
         }
         else {
             System.out.println("答案错误");
         }
        
         break;
         

        }
        }
        System.out.println("totlescore:"+sum);
        out.println(sum);
        
        out.close();
        }
     }

    package XOI;
    public class yunsuan <T>{
        private T a;
        private T b;
        public void yunsaun()
        {
            a=null;
            b=null;
        }
        public void yunsuan(T a,T b)
        {
            this.a=a;
            this.b=b;
        }
       public int plus(int a,int b)
       {
           return a+b;
           
       }
       public int minus(int a,int b)
       {
        return a-b;
           
       }
       public int multiply(int a,int b)
       {
           return a*b;
       }
       public int divide(int a,int b)
       {
           if(b!=0  && a%b==0)
           return a/b;
           else
               return 0;
       }
       }

    实验总结:复习以前的实验内容,更好了解泛型概念。

    实验十  泛型程序设计技术

    实验时间 2018-11-1

    学习总结

    泛型:也称参数化类型(parameterized type),就是在定义类、接口和方法时,通过类型参数指示将要处理的对象类型。(如ArrayList类)

    泛型程序设计(Generic programming):编写代码可以被很多不同类型的对象所重用。

    一个泛型类(generic class)就是具有一个或多个类型变量的类,即创建用类型作为参数的类。

    如一个泛型类定义格式如下:

    class Generics<K,V>其中的K和V是类中的可变类型参数。

    Pair类引入了一个类型变量T,用尖括号(<>)括起来,并放在类名的后面。

    泛型类可以有多个类型变量

    泛型方法可以声明在泛型类中,也可以声明在普通类中。

    NumberGeneric类所能处理的泛型变量类型需和Number有继承关系;

    extends关键字所声明的上界既可以是一个类,也可以是一个接口。

    通过使用super关键字可以固定泛型参数的类型为某种类型或者其超类。

    泛型类可扩展或实现其它的泛型类。

    T表示一种未知类型,而“?”表示任何一种类型。

    单独的?,用于表示任何类型。

     ? extends type,表示带有上界。

     ? super type,表示带有下界。

    定义一个泛型类时,在“<>”内定义形式类型参数,

    例如:“class TestGeneric<K, V>”,其中“K” , “V”不代表值,而是表示类型。

    l 实例化泛型对象的时候,一定要在类名后面指定类型参数的值(类型),一共要有两次书写。例如:

    TestGeneric<String, String> t=new TestGeneric<String, String>();

    l 泛型中<T extends Object>, extends并不代表继承,它是类型范围限制。泛型类不是协变的。

     

    1、实验目的与要求

    (1) 理解泛型概念;

    (2) 掌握泛型类的定义与使用;

    (3) 掌握泛型方法的声明与使用;

    (4) 掌握泛型接口的定义与实现;

    (5)了解泛型程序设计,理解其用途。

    2、实验内容和步骤

    实验1 导入第8章示例程序,测试程序并进行代码注释。

    测试程序1:

    编辑、调试、运行教材311312 代码,结合程序运行结果理解程序;

    在泛型类定义及使用代码处添加注释;

    掌握泛型类的定义及使用。 

    package pair1;

    /**

     * @version 1.01 2012-01-26

     * @author Cay Horstmann

     */

    public class PairTest1

    {

       public static void main(String[] args)

       {

          String[] words = { "Mary", "had", "a", "little", "lamb" };

          Pair<String> mm = ArrayAlg.minmax(words);

          System.out.println("min = " + mm.getFirst());

          System.out.println("max = " + mm.getSecond());

       }

    }

       class ArrayAlg

    //泛型类

    {

       /**

        * Gets the minimum and maximum of an array of strings.

        * @param a an array of strings

        * @return a pair with the min and max value, or null if a is null or empty

        */

       public static Pair<String> minmax(String[] a)

    //用泛型Pair类

       {

          if (a == null || a.length == 0) return null;

          String min = a[0];

          String max = a[0];

          for (int i = 1; i < a.length; i++)

          {

             if (min.compareTo(a[i]) > 0) min = a[i];

             if (max.compareTo(a[i]) < 0) max = a[i];

          }

          return new Pair<>(min, max);

       }

    }

    package pair1;

    /** 

    * @version 1.00 2004-05-10

     * @author Cay Horstmann 

    */public class Pair<T>

    //Pair类引入了一个类型变量T,用尖括号(<>)括起来,并放在类名的后面。

    {   

    private T first;   private T second;   

     public Pair() { first = null; second = null;

    }  

     public Pair(T first, T second) {

    this.first = first;  this.second = second;

    }    

    public T getFirst() { return first;

    }   

    public T getSecond() { return second;

    }    

    public void setFirst(T newValue) { first = newValue;

    }   

    public void setSecond(T newValue) { second = newValue;

    }

    }

     

    测试程序2

    编辑、调试运行教材315 PairTest2,结合程序运行结果理解程序;

    在泛型程序设计代码处添加相关注释;

    泛型方法、泛型变量限定的定义及用途。

    package pair2;

    import java.time.*;

    /** * @version 1.02 2015-06-21

     * @author Cay Horstmann

     */public class PairTest2{   

    public static void main(String[] args)   {   

       LocalDate[] birthdays =          {           

      LocalDate.of(1906, 12, 9),

    // G. Hopper           

     LocalDate.of(1815, 12, 10),

    // A. Lovelace           

     LocalDate.of(1903, 12, 3),

    // J. von Neumann           

     LocalDate.of(1910, 6, 22), // K. Zuse         };      

    Pair<LocalDate> mm = ArrayAlg.minmax(birthdays);     

     //Pair中定义一个LocalDate类的birthdays数组     

     System.out.println("min = " + mm.getFirst());     

     System.out.println("max = " + mm.getSecond());  

     }

    }

    class ArrayAlg//泛型类ArrayAlg{  

     /**      Gets the minimum and maximum of an array of objects of type T.     

     @param a an array of objects of type T      

    @return a pair with the min and max value, or null if a is       null or empty  

     */   public static <T extends Comparable> Pair<T> minmax(T[] a)   

     //使用extends关键字,定义泛型变量的上界,调用Comparable接口   {    

      if (a == null || a.length == 0) return null;      T min = a[0];      

    T max = a[0];      for (int i = 1; i < a.length; i++)      {      

       if (min.compareTo(a[i]) > 0) min = a[i];      

       if (max.compareTo(a[i]) < 0) max = a[i];    

      }      

    return new Pair<>(min, max);  

     }

    }

    package pair2;

    /**

     * @version 1.00 2004-05-10

     * @author Cay Horstmann

     */

    public class Pair<T>

    {

       private T first;

       private T second;

       public Pair() { first = null; second = null; }

       public Pair(T first, T second) { this.first = first;  this.second = second; }

       public T getFirst() { return first; }

       public T getSecond() { return second; }

       public void setFirst(T newValue) { first = newValue; }

       public void setSecond(T newValue) { second = newValue; }

    }

     

    测试程序3

    用调试运行教材335 PairTest3,结合程序运行结果理解程序;

    了解通配符类型的定义及用途。

    package pair3;

    /** 

    * @version 1.01 2012-01-26 

    * @author Cay Horstmann

     */public class

    PairTest3{   

    public static void main(String[] args)   {     

     Manager ceo = new Manager("Gus Greedy", 800000, 2003, 12, 15);      

    Manager cfo = new Manager("Sid Sneaky", 600000, 2003, 12, 15);      

    Pair<Manager> buddies = new Pair<>(ceo, cfo);          

      printBuddies(buddies);     

      ceo.setBonus(1000000);    

      cfo.setBonus(500000);      

    Manager[] managers = { ceo, cfo };      

     Pair<Employee> result = new Pair<>();     

     minmaxBonus(managers, result);      

    System.out.println("first: " + result.getFirst().getName()         

     + ", second: " + result.getSecond().getName());      

    maxminBonus(managers, result);      

    System.out.println("first: " + result.getFirst().getName()          

    + ", second: " + result.getSecond().getName());  

     }   

     public static void printBuddies(Pair<? extends Employee> p)   {     

     Employee first = p.getFirst();     

     Employee second = p.getSecond();     

     System.out.println(first.getName() + " and " + second.getName() + " are buddies.");  

     }   

     public static void minmaxBonus(Manager[] a, Pair<? super Manager> result)   {     

     if (a.length == 0) return;      

    Manager min = a[0];     

     Manager max = a[0];    

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

        if (min.getBonus() > a[i].getBonus()) min = a[i];         

    if (max.getBonus() < a[i].getBonus()) max = a[i];    

      }      

    result.setFirst(min);     

     result.setSecond(max);  

     }    

    public static void maxminBonus(Manager[] a, Pair<? super Manager> result)   {     

     minmaxBonus(a, result);     

     PairAlg.swapHelper(result);

    // OK--swapHelper captures wildcard type  

     }  

     // Can't write public static <T super manager> ...}class PairAlg{  

     public static boolean hasNulls(Pair<?> p)   {    

      return p.getFirst() == null || p.getSecond() == null;  

     }   

     public static void swap(Pair<?> p) { swapHelper(p);

    }  

      public static <T> void swapHelper(Pair<T> p)   {    

      T t = p.getFirst();     

     p.setFirst(p.getSecond());    

      p.setSecond(t);  

     }

    }

    package pair3;

    /** * @version 1.00 2004-05-10 

    * @author Cay Horstmann

     */public class Pair<T> {   

    private T first;  

     private T second;    

    public Pair() { first = null; second = null;

    }   

    public Pair(T first, T second) {

    this.first = first;  this.second = second;

    }    

    public T getFirst() { return first;

    }  

     public T getSecond() { return second;

    }    

    public void setFirst(T newValue) {

    first = newValue;

    }  

     public void setSecond(T newValue) {

    second = newValue;

    }

    }

    package pair3;

    import java.time.*;

    public class Employee{     

    private String name;   

    private double salary;   

    private LocalDate hireDay;   

     public Employee(String name, double salary, int year, int month, int day)   {   

       this.name = name;     

     this.salary = salary;    

      hireDay = LocalDate.of(year, month, day);   

    }   

     public String getName()   {      

    return name;   

    }    

    public double getSalary()   {      

      return salary;  

     }   

     public LocalDate getHireDay()   {        

    return hireDay;  

     }    

    public void raiseSalary(double byPercent)   {       

     double raise = salary * byPercent / 100;      salary += raise;  

     }

    }

    package pair3;

    public class Manager extends Employee{    

     private double bonus;  

      /**      @param name the employee's name     

     @param salary the salary      

    @param year the hire year    

      @param month the hire month    

      @param day the hire day  

     */   public Manager(String name, double salary, int year, int month, int day)   {     

       super(name, salary, year, month, day);      bonus = 0; 

      }    

    public double getSalary()   {      

     double baseSalary = super.getSalary();     

     return baseSalary + bonus;   

    }    public void setBonus(double b)   {        

    bonus = b;   

    }   

     public double getBonus()   {     

       return bonus;  

     }

    }

     

    实验2编程练习:

    编程练习1:实验九编程题总结

    实验九编程练习1总结(从程序总体结构说明、模块说明,目前程序设计存在的困难与问题三个方面阐述)。

    实验九编程练习2总结(从程序总体结构说明、模块说明,目前程序设计存在的困难与问题三个方面阐述)。

    编程练习2:采用泛型程序设计技术改进实验九编程练习2,使之可处理实数四则运算,其他要求不变。

    package XOI;
    import java.util.Random;
    import java.util.Scanner;

    import java.io.FileNotFoundException;

    import java.io.PrintWriter;

    public class Main{
        public static void main(String[] args)
        {
            
            yunsuan counter=new yunsuan();//与其它类建立联系
        PrintWriter out=null;
        try {
            out=new PrintWriter("D:/text.txt");//将文件里的内容读入到D盘名叫text
             
        }catch(FileNotFoundException e) {
            System.out.println("文件找不到");
            e.printStackTrace();
        }
        
        
        int sum=0;

        for(int i=0;i<10;i++)
        {
        int a=new Random().nextInt(100);
        int b=new Random().nextInt(100);
        Scanner in=new Scanner(System.in);
        //in.close();
        
        switch((int)(Math.random()*4))
        
        {
        
        case 0:
            System.out.println( ""+a+"+"+b+"=");
            
            int c1 = in.nextInt();
            out.println(a+"+"+b+"="+c1);
            if (c1 == counter.plus(a, b)) {
                sum += 10;
                System.out.println("答案正确");
            }
            else {
                System.out.println("答案错误");
            }
            
            break ;
        case 1:
            if(a<b)
                            {
                                     int temp=a;
                                     a=b;
                                     b=temp;
                                 }//为避免减数比被减数大的情况

             System.out.println(""+a+"-"+b+"=");
             /*while((a-b)<0)
             {  
                 b = (int) Math.round(Math.random() * 100);
                 
             }*/
            int c2 = in.nextInt();
            
            out.println(a+"-"+b+"="+c2);
            if (c2 == counter.minus(a, b)) {
                sum += 10;
                System.out.println("答案正确");
            }
            else {
                System.out.println("答案错误");
            }
             
            break ;
        
          

        
        case 2:
            
             System.out.println(""+a+"*"+b+"=");
            int c = in.nextInt();
            out.println(a+"*"+b+"="+c);
            if (c == counter.multiply(a, b)) {
                sum += 10;
                System.out.println("答案正确");
            }
            else {
                System.out.println("答案错误");
            }
            break;
        case 3:
            
            
             
            while(b==0)
            {  b = (int) Math.round(Math.random() * 100);//满足分母不为0
            }
            while(a%b!=0)
            {
                  a = (int) Math.round(Math.random() * 100);
                  b = (int) Math.round(Math.random() * 100);
            }
            System.out.println(""+a+"/"+b+"=");
         int c0= in.nextInt();
        
         out.println(a+"/"+b+"="+c0);
         if (c0 == counter.divide(a, b)) {
             sum += 10;
             System.out.println("答案正确");
         }
         else {
             System.out.println("答案错误");
         }
        
         break;
         

        }
        }
        System.out.println("totlescore:"+sum);
        out.println(sum);
        
        out.close();
        }
     }

    package XOI;
    public class yunsuan <T>{
        private T a;
        private T b;
        public void yunsaun()
        {
            a=null;
            b=null;
        }
        public void yunsuan(T a,T b)
        {
            this.a=a;
            this.b=b;
        }
       public int plus(int a,int b)
       {
           return a+b;
           
       }
       public int minus(int a,int b)
       {
        return a-b;
           
       }
       public int multiply(int a,int b)
       {
           return a*b;
       }
       public int divide(int a,int b)
       {
           if(b!=0  && a%b==0)
           return a/b;
           else
               return 0;
       }
       }

     

    实验总结:复习以前的实验内容,更好了解泛型概念。

  • 相关阅读:
    mysql使用笔记
    js this指向练习题
    for in 和for of的区别
    ES6 Iterator(迭代器或遍历器)和 Generator (生成器)
    vue兄弟之间传值 bus中央事件总线
    关于recycleview 滑动item变长(item变形)问题
    蓝牙篇
    如何限制应用安装,
    网络工具,通过该类可以直接监听网络状态改变
    MyRecycleView带有上拉加载更多
  • 原文地址:https://www.cnblogs.com/baimaciren/p/9904154.html
Copyright © 2011-2022 走看看