我无法运行java应用程序

时间:2011-03-13 18:38:45

标签: java eclipse

我不确定是否需要在此处粘贴我的代码,但是当我运行我的代码时,我右键单击类对象,它通常表示作为java应用程序运行,但现在所有它都说是运行配置。

我正在使用Eclise。

这是我的代码。我知道这是一个支架放置问题

import java.util.Calendar;

public class Date {

    private int month;
    private int day;
    private int year;

    public static void main(String[] args) {
    } 

    public Date(int theMonth, int theDay, int theYear) {
        month = checkMonth( theMonth );
        year = checkYear( theYear );
        day = checkDay( theDay );
        System.out.printf("Date object constructor for date %s\n", toString() );
    }

    private int checkYear(int testYear) {
        if ( testYear > 0 )
            return testYear;
        else {
            System.out.printf("Invalid year (%d) set to 1.\n", testYear );
            return 1;
        }
    }

    private int checkMonth( int testMonth ) {
        if ( testMonth > 0 && testMonth <= 12 )
            return testMonth;
        else {
            System.out.printf("Invalid month (%d) set to 1.\n", testMonth );
            return 1;
        }
    }


    private int checkDay( int testDay ) {
        int daysPerMonth[] = 
            { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

        if ( testDay > 0 && testDay <= daysPerMonth[ month ] )
            return testDay;

        if ( month == 2 && testDay == 29 && ( year % 400 == 0 ||
            ( year % 4 == 0 && year % 100 != 0 ) ) )
            return testDay;

        System.out.printf( "Invalid day (%d) set to 1.\n", testDay );

        return 1;
    }

    public void nextDay() {
        int testDay = day + 1;
        if ( checkDay( testDay ) == testDay )
            day = testDay;
        else {
            day = 1;
            nextMonth();
        }
    }

    public void nextMonth() {
        if ( 12 == month )
            year++;
        month = month % 12 + 1;
    }

    public String toString() {
        return String.format( "%d/%d/%d", month, day, year );
    }
}

class DateTest {
    public static void main( String args[] ) {
        System.out.println( "Checking increment" );
        Date testDate = new Date( 03, 13, 2011 );

        for ( int counter = 0; counter < 3; counter++ ) {
            testDate.nextDay();
            System.out.printf( "Incremented Date: %s\n", testDate.toString() );
        }
    }
}

3 个答案:

答案 0 :(得分:3)

一些事情:

  1. 请删除以下代码行(在Date类内)。

    public static void main(String [] args){

    }

  2. 确保在Date.java中找到类Date,并在DateTest.java中找到DateTest(因为您可以看到每个类名都以大写字母和名称开头)该类的完全与文件名相同,扩展名为.java )。在DateTest,您必须相应地导入Date课程。

  3. 希望这有帮助。

答案 1 :(得分:1)

请记住,为了运行Java应用程序,它必须具有 main 方法。特别是,它必须声明为:

public static void main(String[] args)
{
    //do stuff here
}

当您在Eclipse中运行程序时,它实际上正在执行的是执行main()中的所有代码。它不会执行任何其他方法/代码,除非你从main调用它(当然,它通过main间接调用)。因此,如果您想要发生任何事情,您需要在main中放置您想要实际执行的操作。例如:

public static void main(String[] args)
{
    System.out.println("Hello World!");
}

通过Eclipse运行时,将打印“Hello World!”并完成。无论你想用Date类做什么,都应该使用那个方法。

答案 2 :(得分:0)

你改变了你的代码 - 所以我编辑了我的答案:

删除Date类中的main方法,并将Date Test类公开。

public class { ... }

是存储在名为DateClass.java的文件中的DateTest类吗?