Я не могу запустить приложение Java - PullRequest
0 голосов
/ 13 марта 2011

Я не уверен, нужно ли мне вставлять свой код сюда, но когда я запускаю свой код, я щелкаю правой кнопкой мыши на объекте класса, и он обычно говорит, что выполняется как 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 ]

3 голосов
/ 14 марта 2011

Пара вещей:

  1. Пожалуйста, удалите следующие строки кода (внутри вашего Date класса).

    public static void main (аргументы String []) {

    }

  2. Убедитесь, что класс Date находится внутри Date.java, а DateTest находится внутри DateTest.java (как вы можете видеть, что каждое имя класса начинается с заглавной буквы, а имя класса точно совпадает с именем файла с расширением .java ). В DateTest вам нужно будет соответственно импортировать класс Date.

Надеюсь, это поможет.

1 голос
/ 13 марта 2011

Помните, что для запуска Java-приложения у него должен быть метод main .В частности, он должен быть объявлен как:

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

Когда вы запускаете вашу программу в Eclipse, она фактически выполняет весь код в main ().Он НЕ будет выполнять какие-либо другие методы / код, если вы не вызовете его из main (или, конечно, он вызывается косвенно через main).Поэтому, если вы хотите, чтобы НИЧЕГО произошло, вам нужно поместить то, что вы хотите сделать, в основном.Например:

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

при запуске через Eclipse выведет «Hello World!»и закончить.Все, что вы хотите сделать с классом Date, должно затем использоваться в этом методе.

0 голосов
/ 13 марта 2011

вы изменили свой код - поэтому я редактирую свой ответ:

избавьтесь от основного метода в классе Date и сделайте ваш класс Date Test общедоступным.

public class { ... }

- это DateTestкласс хранится в файле с именем DateClass.java?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...