zoukankan      html  css  js  c++  java
  • 文件的操作

    1 商品促销日期计算程序

    用户输入商品生产日期和保质期,通过程序计算促销日期。计算规则为:到保质期前14天所在周的周三为促销日。控制台交互情况如图-1所示。

    图- 1

    参考答案

    实现此案例需要按照如下步骤进行。

    步骤一:构建测试方法

    在课上案例的TestCalendar类中添加测试方法testDiscountDate,代码如下所示:

     
    1. package day03;
    2. import java.text.ParseException;
    3. import java.text.SimpleDateFormat;
    4. import java.util.Calendar;
    5. import java.util.Date;
    6. import java.util.GregorianCalendar;
    7. import java.util.Scanner;
    8. import org.junit.Test;
    9. public class TestCalendar {
    10. /**
    11. * 使Date表示的日期与Calendar表示的日期进行互换
    12. * @throws ParseException
    13. */
    14.     @Test
    15.     public void testDiscountDate() throws Exception {
    16.         
    17.     }
    18. }

    步骤二:接收用户输入

    接收用户输入的商品生产日期和保质期,代码如下所示:

     
    1. package day03;
    2. import java.text.ParseException;
    3. import java.text.SimpleDateFormat;
    4. import java.util.Calendar;
    5. import java.util.Date;
    6. import java.util.GregorianCalendar;
    7. import java.util.Scanner;
    8. import org.junit.Test;
    9. public class TestCalendar {
    10. /**
    11. * 使Date表示的日期与Calendar表示的日期进行互换
    12.      * @throws ParseException
    13. */
    14.     @Test
    15.     public void testDiscountDate() throws Exception {
    16.         Scanner scanner = new Scanner(System.in);
    17.         System.out.println("请输入生产日期(yyyy-MM-dd):");
    18.         String dateStr = scanner.nextLine();
    19.         
    20.         System.out.println("请输入保质期(天数):");
    21.         int days = scanner.nextInt();
    22.     }    
    23. }

    步骤三:对日期类型进行转换

    首先,使用SimpleDateFormat类的parse方法将字符串日期转换为Date表示的日期;然后,使用Calendar类的setTime方法将Date表示的日期转换为Calendar表示的日期,代码如下所示:

     
    1. package day03;
    2. import java.text.ParseException;
    3. import java.text.SimpleDateFormat;
    4. import java.util.Calendar;
    5. import java.util.Date;
    6. import java.util.GregorianCalendar;
    7. import java.util.Scanner;
    8. import org.junit.Test;
    9. public class TestCalendar {
    10. /**
    11. * 使Date表示的日期与Calendar表示的日期进行互换
    12. * @throws ParseException
    13. */
    14.     @Test
    15.     public void testDiscountDate() throws Exception {
    16.         Scanner scanner = new Scanner(System.in);
    17.         System.out.println("请输入生产日期(yyyy-MM-dd):");
    18.         String dateStr = scanner.nextLine();
    19.         
    20.         System.out.println("请输入保质期(天数):");
    21.         int days = scanner.nextInt();
    22.         
    23.         //将字符串日期转换为Date表示的日期
    24.         SimpleDateFormat sdf
    25.             = new SimpleDateFormat("yyyy-MM-dd");
    26.         Date date = sdf.parse(dateStr);
    27.         
    28.         //将Date表示的日期转换为Calendar表示的日期
    29.         Calendar calendar = Calendar.getInstance();
    30.         calendar.setTime(date);
    31.     }
    32.     
    33. }

    步骤四:计算促销日期

    使用Calendar类的add方法和set方法来计算促销日期,代码如下所示:

     
    1. package day03;
    2. import java.text.ParseException;
    3. import java.text.SimpleDateFormat;
    4. import java.util.Calendar;
    5. import java.util.Date;
    6. import java.util.GregorianCalendar;
    7. import java.util.Scanner;
    8. import org.junit.Test;
    9. public class TestCalendar {
    10. /**
    11. * 使Date表示的日期与Calendar表示的日期进行互换
    12. * @throws ParseException
    13. */
    14.     @Test
    15.     public void testDiscountDate() throws Exception {
    16.         Scanner scanner = new Scanner(System.in);
    17.         System.out.println("请输入生产日期(yyyy-MM-dd):");
    18.         String dateStr = scanner.nextLine();
    19.         
    20.         System.out.println("请输入保质期(天数):");
    21.         int days = scanner.nextInt();
    22.         
    23.         //将字符串日期转换为Date表示的日期
    24.         SimpleDateFormat sdf
    25.             = new SimpleDateFormat("yyyy-MM-dd");
    26.         Date date = sdf.parse(dateStr);
    27.         
    28.         //将Date表示的日期转换为Calendar表示的日期
    29.         Calendar calendar = Calendar.getInstance();
    30.         calendar.setTime(date);
    31.         
    32.         //计算促销日期
    33.         calendar.add(Calendar.DAY_OF_YEAR, days);
    34.         calendar.add(Calendar.DAY_OF_YEAR, -14);
    35.         calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
    36.     }
    37.     
    38. }

    步骤五:将促销日期格式化输出

    首先,使用Calendar类的getTime方法将Calendar表示的日期转换为Date表示的日期;然后,使用SimpleDateFormat类的format方法对日期进行格式化,代码如下所示:

     
    1. package day03;
    2. import java.text.ParseException;
    3. import java.text.SimpleDateFormat;
    4. import java.util.Calendar;
    5. import java.util.Date;
    6. import java.util.GregorianCalendar;
    7. import java.util.Scanner;
    8. import org.junit.Test;
    9. public class TestCalendar {
    10.     /**
    11. * 使Date表示的日期与Calendar表示的日期进行互换
    12. * @throws ParseException
    13. */
    14.     @Test
    15.     public void testDiscountDate() throws Exception {
    16.         Scanner scanner = new Scanner(System.in);
    17.         System.out.println("请输入生产日期(yyyy-MM-dd):");
    18.         String dateStr = scanner.nextLine();
    19.         
    20.         System.out.println("请输入保质期(天数):");
    21.         int days = scanner.nextInt();
    22.         
    23.         //将字符串日期转换为Date表示的日期
    24.         SimpleDateFormat sdf
    25.             = new SimpleDateFormat("yyyy-MM-dd");
    26.         Date date = sdf.parse(dateStr);
    27.         
    28.         //将Date表示的日期转换为Calendar表示的日期
    29.         Calendar calendar = Calendar.getInstance();
    30.         calendar.setTime(date);
    31.         
    32.         //计算促销日期
    33.         calendar.add(Calendar.DAY_OF_YEAR, days);
    34.         calendar.add(Calendar.DAY_OF_YEAR, -14);
    35.         calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
    36.         
    37.         //将Calendar表示的日期转换为Date表示的日期
    38.         date = calendar.getTime();
    39.         
    40.         //对日期进行格式话
    41.         dateStr = sdf.format(date);
    42.         System.out.println("促销日为:"+dateStr);
    43.     }
    44. }

    本案例的完整代码如下所示:

     
    1. package day03;
    2. import java.text.ParseException;
    3. import java.text.SimpleDateFormat;
    4. import java.util.Calendar;
    5. import java.util.Date;
    6. import java.util.GregorianCalendar;
    7. import java.util.Scanner;
    8. import org.junit.Test;
    9. public class TestCalendar {
    10. /**
    11. * 使Date表示的日期与Calendar表示的日期进行互换
    12. * @throws ParseException
    13. */
    14.     @Test
    15.     public void testDiscountDate() throws Exception {
    16.         Scanner scanner = new Scanner(System.in);
    17.         System.out.println("请输入生产日期(yyyy-MM-dd):");
    18.         String dateStr = scanner.nextLine();
    19.         
    20.         System.out.println("请输入保质期(天数):");
    21.         int days = scanner.nextInt();
    22.         
    23.         //将字符串日期转换为Date表示的日期
    24.         SimpleDateFormat sdf
    25.             = new SimpleDateFormat("yyyy-MM-dd");
    26.         Date date = sdf.parse(dateStr);
    27.         
    28.         //将Date表示的日期转换为Calendar表示的日期
    29.         Calendar calendar = Calendar.getInstance();
    30.         calendar.setTime(date);
    31.         
    32.         //计算促销日期
    33.         calendar.add(Calendar.DAY_OF_YEAR, days);
    34.         calendar.add(Calendar.DAY_OF_YEAR, -14);
    35.         calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
    36.         
    37.         //将Calendar表示的日期转换为Date表示的日期
    38.         date = calendar.getTime();
    39.         
    40.         //对日期进行格式话
    41.         dateStr = sdf.format(date);
    42.         System.out.println("促销日为:"+dateStr);
    43.     }    
    44. }

    2 下面代码输出结果是?

    Cell类的代码如下所示:

     
    1. public class Cell{
    2.     int row;
    3.     int col;
    4.     public Cell(int row, int col) {
    5.         this.row = row;
    6.         this.col = col;
    7.     }
    8.     public void drop() {
    9.         row++;
    10.     }
    11.     @Override
    12.     public String toString() {
    13.         return "(" + row + "," + col + ")";
    14.     }
    15. }

    运行testRef方法,程序的输出结果是:()。

     
    1.     public void testRef() {
    2.         Collection<Cell> cells = new ArrayList<Cell>();
    3.         Cell c0 = new Cell(5, 6);
    4.         Cell c1 = new Cell(7, 9);
    5.         cells.add(c0);
    6.         cells.add(c1);
    7.         System.out.println(c0 + "," + c1);
    8.         System.out.println(cells);
    9.         c0.drop();
    10.         c1.drop();
    11.         System.out.println(c0 + "," + c1);
    12.         System.out.println(cells);
    13.     }

    A.(5,6),(7,9)

    [(5,6), (7,9)]

    (6,6),(8,9)

    [(6,6), (8,9)]

    B.(5,6),(7,9)

    [(5,6), (7,9)]

    (5,6),(7,9)

    [(5,6), (7,9)]

    C.(5,6),(7,9)

    [(5,6), (7,9)]

    (6,6),(8,9)

    [(5,6), (7,9)]

    D.(6,6),(8,9)

    [(6,6), (8,9)]

    (6,6),(8,9)

    [(6,6), (8,9)]

    参考答案

    本题正确答案为A。

    集合中存储的都是引用类型元素,并且集合只保存每个元素对象的引用,而并非将元素对象本身存入集合。本题中,当改变对象c0和c1行列坐标时,对应在集合中的元素的属性也会随之改变。

    3 简述contains方法和equals方法的关系

    参考答案

    contains方法用于判断给定的元素是否被包含在集合中。若包含则返回true,否则返回false。另外,在判断给定的元素是否被包含在集合中,要使用元素的equals方法进行比较的,比较规则如下:

    1. (o==null ? e==null : o.equals(e))

    其中e是集合中的元素。上述代码表示当某对象与集合中的某对象使用equals方法进行比较返回true,那么contains方法返回true,否则,返回false。

    4 下面代码输出的结果是?

    请看如下代码:

     
    1.     public void testSizeAndClearAndIsEmpty() {
    2.         Collection<String> c = new ArrayList<String>();
    3.         System.out.println("isEmpty:"+c.isEmpty());
    4.         c.add("terry");
    5.         c.add("allen");
    6.         c.add("jerry");
    7.         c.add("smith");
    8.         System.out.println("isEmpty:" + c.isEmpty() + ",size: " + c.size());
    9.         c.clear();
    10.         System.out.println("isEmpty:" + c.isEmpty() + ", size: " + c.size());
    11.     }

    运行testSizeAndClearAndIsEmpty方法,程序的输出结果是:()。

    A.isEmpty:false

    isEmpty:true,size: 4

    isEmpty:false, size: 0

    B.isEmpty:true

    isEmpty:false,size: 4

    isEmpty:true, size: 4

    C.isEmpty:false

    isEmpty:true,size: 4

    isEmpty:false, size: 4

    D.isEmpty:true

    isEmpty:false,size: 4

    isEmpty:true, size: 0

    参考答案

    本题正确答案为D。

    本题涉及到Collection接口的isEmpty方法、size方法以及clear方法应用。其中size方法用于返回当前集合中的元素总数; clear方法用于清空当前集合; isEmpty方法用于判断当前集合中是否不包含任何元素。

  • 相关阅读:
    对于匿名对象,内部类这块的理解
    final等关键字和代码块
    构造方法
    接口与多态的总结
    关于折半法查找的一些总结以及ArrayList类的总结
    关于冒泡法的总结(主要是格式问题了)
    java读取properties文件的几种方式(转载)
    JAVA导出EXCEL表格(转载)
    map遍历的四种方法
    Java集合源码分析(四)HashMap
  • 原文地址:https://www.cnblogs.com/xyk1987/p/8330929.html
Copyright © 2011-2022 走看看