JavaSE编码试题强化练习3

1.给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐。
public class TestCirculation {
  public static void main(String[] args) {
    int money = 20;
    int price = 3;
    /**
     * temp为每一次可以买的可乐的瓶数
     */
    int temp = 0;
    /**
     * change表示每次购买完可乐剩下的钱
     */
    int change = 0;
    /**
     * sum表示总的可乐瓶数
     */
    int sum = 0;
    /**
     * 判断条件:如果钱数大于可乐价格
     */
    while (money >= price){
      /**
       * 购买可乐
       */
      temp = money / price;
      /**
       * 可乐总瓶数增加
       */
      sum += temp;
      /**
       * 计算剩下的钱
       */
      change = money % price;
      /**
       * 兑换可乐瓶子,计算剩余的总钱数
       */
      money = change + temp;
    }
    /**
     * 输出结果
     */
    System.out.println(sum);
  }
}

运行结果:

JavaSE编码试题强化练习3

 

 2.写一个方法对任意数据类型数组进行排序。

public class TestSortArr {
  public static void main(String[] args) {
    String [] str = {"D","C","B","A"};
    sortArr(str);
  }
  public static void sortArr(Object [] arr){
    /**
     * 输出排序前的数组
     */
    System.out.print("排序前:");
    for (int i = 0;i < arr.length;i++){
      System.out.print(arr[i]+"  ");
    }
    System.out.println();
    /**
     * 大循环,一共n个元素,达到最终有序,至多n - 1趟循环
     */
    Object temp;
    for (int i = 0; i < arr.length - 1;i++) {
      /**
       * 定义一个符号量,没发生交换,有序
       */
      boolean flag = true;
      for (int j = 0; j < arr.length - 1 - i; j++) {
        /**
         * 小循环
         */
        Comparable c1 = (Comparable)arr[j];
        Comparable c2 = (Comparable)arr[j + 1];
        if (c1.compareTo(c2) > 0){
          /**
           * 交换
           */
          temp = arr[j];
          arr[j] = arr[j + 1];
          arr[j + 1] = temp;
          /**
           * 修改符号量,交换过,无序
           */
          flag = false;
        }
      }
      /**
       * 判断一趟小循环下来数组是否有序
       */
      if (flag){
        /**
         * 中断循环
         */
        break;
      }
    }
    /**
     * 输出排序后的数组
     */
    System.out.print("排序后:");
    for (int i = 0; i < arr.length; i++) {
      System.out.print(arr[i]+"  ");
    }
  }
}

运行结果:

JavaSE编码试题强化练习3

 

 

 3. 实现List和Map数据的转换。

思路:

功能1:定义方法public static void listToMap( ){ }将List中Student元素封装到Map中

1) 使用构造方法Student(int stuId, String name, int age, double score)创建多个学生信息并加入List

2) 遍历List,输出每个Student信息

3) 将List中数据放入Map,使用Student的stuId属性作为key,使用Student对象信息作为value

4) 遍历Map,输出每个Entry的key和value

 功能2:定义方法public static void mapToList( ){ }将Map中Student映射信息封装到List

1) 创建实体类StudentEntry,可以存储Map中每个Entry的信息

2) 使用构造方法Student(int stuId, String name, int age, double score)创建多个学生信息,并使用Student的stuId属性作为key,存入Map

3) 创建List对象,每个元素类型是StudentEntry

4) 将Map中每个Entry信息放入List对象,遍历List输出key和value

/**
 * 创建学生类,实现Comparable接口
 */
public class Student {
  /**
   * 私有属性:学号,姓名,年龄,分数
   */
  private int stuId;
  private String name;
  private int age;
  private double score;
  /**
   *构造方法
   */
  public Student() {
  }

  public Student(int stuId, String name, int age, double score) {
    this.stuId = stuId;
    this.name = name;
    this.age = age;
    this.score = score;
  }
  /**
   * getter和setter方法
   */
  public int getStuId() {
    return stuId;
  }

  public void setStuId(int stuId) {
    this.stuId = stuId;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getAge() {
    return age;
  }

  public void setAge(int age) {
    this.age = age;
  }

  public double getScore() {
    return score;
  }

  public void setScore(double score) {
    this.score = score;
  }
  @Override
  public String toString() {
    return "Student{" +
      "stuId=" + stuId +
      ", name='" + name + '\'' +
      ", age=" + age +
      ", score=" + score +
      '}';
  }
}
public class TestListToMap {
  public static void main(String[] args) {
   listToMap();
  }
  public static void listToMap(){
    /**
     * 1.创建多个学生信息
     */
    Student stu1 = new Student(1101,"张三",22,98.0);
    Student stu2 = new Student(1102,"李思",23,78.0);
    Student stu3 = new Student(1103,"王武",22,92.0);
    Student stu4 = new Student(1104,"孙琦",21,98.0);
    /**
     * 2.加入List
     */
    List<Student> list = new ArrayList<Student>();
    list.add(stu1);
    list.add(stu2);
    list.add(stu3);
    list.add(stu4);
    /**
     * 3.遍历List,输出每个学生的信息
     */
    Iterator it1 = list.iterator();
    while (it1.hasNext()){
      Student stu = (Student) it1.next();
      System.out.println(stu);
    }
    System.out.println(
      "=============================================================");
    /**
     * 4.将List中数据存入Map,用Student的stuId属性作为key
     */
    Map<Integer,Student> map = new HashMap<Integer,Student>();
    /*map.put(stu1.getStuId(),stu1);
    map.put(stu2.getStuId(),stu2);
    map.put(stu3.getStuId(),stu3);
    map.put(stu4.getStuId(),stu4);*/
    Iterator it2 = list.iterator();
    while (it2.hasNext()){
      Student stu = (Student) it2.next();
      map.put(stu.getStuId(),stu);
    }
    /**
     * 5.遍历Map,输出每个Entry的key和value
     */
    Set<Map.Entry<Integer,Student>> entrySet = map.entrySet();
    for (Map.Entry<Integer,Student> entry : entrySet){
      System.out.println(entry.getKey()+"---->"+entry.getValue());
    }
  }
}

运行结果:

JavaSE编码试题强化练习3

 

/**
 * 创建StudentEntry存放key和value的映射关系
 */
public class StudentEntry {
  /**
   * key-->stuId
   * value-->stu
   */
  private int key;
  private Student stu;
  /**
   *  getter setter方法
   */
  public void setKey(int key) {
    this.key = key;
  }
  public void setStu(Student stu) {
    this.stu = stu;
  }

  public int getKey() {
    return key;
  }

  public Student getStu() {
    return stu;
  }
}
public class TestMapToList {
  public static void main(String[] args) {
    mapToList();
  }
  public static void mapToList(){
    /**
     * 创建多个学生信息
     */
    Student stu1 = new Student(1101,"张三",22,98.0);
    Student stu2 = new Student(1102,"李思",23,78.0);
    Student stu3 = new Student(1103,"王武",22,92.0);
    Student stu4 = new Student(1104,"孙琦",21,98.0);
    /**
     * 使用Student的id属性作为key,存入Map
     */
    Map<Integer,Student> map = new HashMap<Integer,Student>();
    map.put(stu1.getStuId(),stu1);
    map.put(stu2.getStuId(),stu2);
    map.put(stu3.getStuId(),stu3);
    map.put(stu4.getStuId(),stu4);
    /**
     * 遍历Map
     */
    Set<Entry<Integer,Student>> entrySet = map.entrySet();
    for (Entry<Integer,Student> entry : entrySet){
      System.out.println(entry.getKey()+"---->"+entry.getValue());
    }
    System.out.println(
      "============================================================");
    /**
     * 创建List对象,每个元素的类型都是StudentEntry
     * 需创建StudentEntry实体类包含key--stuId和value--stu
     */
    List<StudentEntry> list = new ArrayList<StudentEntry>();
    /**
     * 将Map对象转化为List集合
     */
    for (Entry<Integer,Student> entry : map.entrySet()){
      StudentEntry studentEntry = new StudentEntry();
      /**
       * 将Map中的一个映射关系,封装为一个StudentEntry对象
       */
      studentEntry.setKey(entry.getKey());
      studentEntry.setStu(entry.getValue());
      /**
       * 将Student对象List集合
       */
      list.add(studentEntry);
    }
    /**
     * 遍历List
     */
    Iterator<StudentEntry> it = list.iterator();
    while (it.hasNext()){
      StudentEntry se = it.next();
      System.out.println(se.getStu());
    }
  }
}

运行结果:

JavaSE编码试题强化练习3

 

 

 

 

 

 

 

 

 

 

 

上一篇:sql select sql查询


下一篇:Python中的类