【问题标题】:writing Array in class and objects [closed]在类和对象中编写数组 [关闭]
【发布时间】:2014-12-15 23:28:07
【问题描述】:

我定义了一个 Date 类和 Date 对象。我想编写一个 compareTo 方法来比较 Date 日期的年份。我想比较 d0 和 d1,然后比较 d1 和 d2、d2 和 d3、d3 和 d4。我想创建一个数组 list2,它有 1、0 或 -1。当我从 Date 类中调用它们时遇到问题。我很乐意得到任何帮助。

public class HW_ObjectArrays 
{
    public static void main( String[] args) 
    {

        System.out.println( "Start of HW_ObjectArrays\n");
        int i;
        Date d0, d1, d2, d3, d4;
        d0 = new Date(07,12,2014);
        d1 = new Date(23,06,2013);
        d2 = new Date(12,01,2012);
        d3 = new Date(12,01,2012);
        d4 = new Date(06,04,2011);
        Date[] list = new Date[5];
        list[0] = d0;
        list[1] = d1;
        list[2] = d2;
        list[3] = d3;
        list[4] = d4;

        int[] list2 = new int[4];
        System.out.println("d0 and d1 :" + compareTo(list2[0]));
        System.out.println("d1 and d2 :" + list2[1]);
        System.out.println("d2 and d3 :" + list2[2]);   
        System.out.println("d3 and d4 :" + list2[3]);    


public class Date
{
    public int getYear()
    {
        return year;
    }


    public int[] compareTo(Date d0, Date d1, Date d2, Date d3, Date d4)
    { 
        int i, a0, a1, a2, a3, a4;
        a0 = d0.getYear();
        a1 = d1.getYear();
        a2 = d2.getYear();
        a3 = d3.getYear();
        a4 = d4.getYear();
        int[] list = new int[5];
        list[0] = a0;   
        list[1] = a1;
        list[2] = a2;
        list[3] = a3;
        list[4] = a4;
        int[] list2 = new int[4];
        for (i = 0; i < list2.length - 1; i++)
        {
            if (list[i] > list[i + 1])
            {
                list2[i] = 1;
            }
            if (list[i] == list[i + 1])
            {
                list2[i] = 0;
            }
            if (list[i] < list[i + 1])
            {
            list2[i] = -1;
            }
        }

        return list2;

     }
}

【问题讨论】:

  • 如果您具体告诉我们您的问题是什么——您看到什么行为以及您期望什么,包括任何错误消息/堆栈跟踪,您更有可能获得帮助。
  • 我想比较日期的年份。 list2 应该是 [1,1,0,1] 我想把它们放在 System.out.println's 中。
  • 您应该小心创建 Date 对象的方式。您正在使用八进制常量。在new Date(06,04,2011) 中,常量0604 都是base-8。如果您尝试在 7 月之后创建日期,您会得到一些惊喜。

标签: java arrays class object


【解决方案1】:

这样试试;

日期类;

public class Date
{
    private int day,month,year;
    public int getYear()
    {
        return year;
    }

    public int getMonth()
    {
        return month;
    }

    public int getDay()
    {
        return day;
    }
 public Date(int day,int month,int year){
     this.day =day;
     this.month= month;
     this.year=year;
 }

    public static int[] compareTo(Date[] date)
    { 
        int i, a0, a1, a2, a3, a4;
        a0 = date[0].getYear();
        a1 = date[1].getYear();
        a2 = date[2].getYear();
        a3 = date[3].getYear();
        a4 = date[4].getYear();
        int[] list = new int[5];
        list[0] = a0;   
        list[1] = a1;
        list[2] = a2;
        list[3] = a3;
        list[4] = a4;
        int[] list2 = new int[5];
        for (i = 0; i < list2.length - 1; i++)
        {
            if (list[i] > list[i + 1])
            {
                list2[i] = 1;
            }
            if (list[i] == list[i + 1])
            {
                list2[i] = 0;
            }
            if (list[i] < list[i + 1])
            {
            list2[i] = -1;
            }
        }

        return list2;

     }
}

HW_ObjectArrays 类;

public class HW_ObjectArrays 
{
    public static void main( String[] args) 
    {

        System.out.println( "Start of HW_ObjectArrays\n");
        int i;
        Date d0, d1, d2, d3, d4;
        d0 = new Date(07,12,2014);
        d1 = new Date(23,06,2013);
        d2 = new Date(12,01,2012);
        d3 = new Date(12,01,2012);
        d4 = new Date(06,04,2011);
        Date[] list = new Date[5];
        list[0] = d0;
        list[1] = d1;
        list[2] = d2;
        list[3] = d3;
        list[4] = d4;

        int[] list2 =  Date.compareTo(list);
        System.out.println("d0 and d1 :" + list2[0]);
        System.out.println("d1 and d2 :" + list2[1]);
        System.out.println("d2 and d3 :" + list2[2]);   
        System.out.println("d3 and d4 :" + list2[3]);    

    }
}

您的代码有很多错误,我尝试使其正常,您可以尝试一下,可以吗?

【讨论】:

  • list2 的所有元素都为零。
  • 我执行了,结果是 d0 and d1 :1 d1 and d2 :1 d2 and d3 :0 d3 and d4 :1
  • 请取走所有代码,然后重试。
  • 对不起,我写错了。现在,它起作用了。感谢您的代码。
【解决方案2】:

将比较方法更改为:

public int compareTo(Date comparedObject){

    if(comparedObjct.getYear() > this.getYear()){
        return -1;
    } else if(comparedObjct.getYear() > this.getYear()) {
        return 0;
    } else {
        return 1;
    }

}

你的 main 应该是这样的,其中 results 是你的结果数组

public static void main(){

    Date[] list1 = ... /* Create the list  */    
    Date[] list2 = ... /* Create the list  */    
    int[] results = new int[list1.legth];

    for(int i = 0; i < list1.length; i++){
        results[i] = list1[i].compareTo(list2[i]);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 2012-11-16
    • 2018-06-12
    • 2021-06-14
    • 1970-01-01
    相关资源
    最近更新 更多