0

这是我的代码:

import java.util.*;
import java.io.*;
import type.lib.GlobalCredit;
import type.lib.CreditCard;
import java.text.SimpleDateFormat;

public class eCheck08A
{
    public static void main(String[] args)
    {
        PrintStream out = System.out;
        Scanner in = new Scanner(System.in);

        GlobalCredit credit1 = new GlobalCredit().getRandom();

        out.print("Enter report range in years ... ");
        int range = in.nextInt();
        out.println("Cards expiring before " + range + " year(s) from now: ");

        SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy");

        for (CreditCard cc : credit1)
        {
            out.print(cc.getNumber());
            out.println("\t" + sf.format(cc.getExpiryDate()));
        }   
    }
}

起初,我的应用程序要求输入 Range 年份,假设我们输入“3”。我想在低于范围号的任何年份的日期旁边放一个“*”。我假设 Java 假设日期是今天,所以是 2012 年 7 月 23 日。例如,如果我们得到 16/04/2013,我想要一个“*”旁边。但如果我们得到 23/05/2016,则不会出现“*”。

编辑:

  Date endDate = new Date(2015, 12, 31);
    for (CreditCard cc : credit1)
    {
        if (cc.getExpiryDate().compareTo(endDate) < 0)
        {
            if(cc.getExpiryDate().compareTo(endDate) > 0)
            {
                out.print("*");
            }
            out.print(cc.getNumber());
            out.println("\t" + sf.format(cc.getExpiryDate()));
                     }
            }

范围是

4

2 回答 2

2

由于这是作业,我不会给你完整的代码。

Java Date 类允许使用该.compareTo()方法比较两个日期。尝试创建一个精确range到未来几年的日期,并查看信用卡的到期日期是否晚于该日期。

于 2012-07-24T03:08:25.760 回答
1

java中的compareTo允许您比较两个对象。因此,如果您比较两个日期,您可以看到哪个日期更晚或更早。我会在你的 for 循环中放一些 if 语句。

例如

Date endDate= new Date(2015, 12, 25);



for (//some stuff....)
{
     if (cc.getExpiryDate.compareTo(endDate)<0)
     {
         if (cc.getExpiryDate.compareTo(//????????? figure out which date should go here) >0)
         {  
               // put a star here
         }
      }
 }

当您执行 .compareTo 时,如果您比较的数字更大,您将返回一个负整数,否则如果您的对象更大,则返回正整数。如果它们相等,它将为零。这就是为什么人们会做 <0 , >0 或 ==0

于 2012-07-24T08:39:45.433 回答