文件的操作

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方法用于判断当前集合中是否不包含任何元素。

原文地址:https://www.cnblogs.com/xyk1987/p/8330929.html