2014-12-10 2 views
0

Это мой первый вопрос в этом форуме. Надеюсь иметь хороший опыт!Вызов основного метода из основного метода

Мой вопрос связан с Java. В C/C++ иногда нам нужно вызвать функцию main(), находясь в функции main(). Можно ли сделать то же самое и на Java?

Если да, предложите мне какой-либо способ сделать это, а также завершить программу со второго вызова main().

т.е.

public static void main(String args[]){ 
    main();//The question is about this part and also how to get out from this call directly to termination 
} 

Еще одна вещь. Я новичок в JAVA, поэтому, пожалуйста, будьте настолько наглядны, насколько сможете. Спасибо за вашу поддержку в Advance!

+4

Хотя это возможно, возможно, это не обязательно. Чего вы пытаетесь достичь с помощью рекурсивного вызова main()? – Kayaman

+0

Я не уверен, почему вы захотите сделать это на языке _any_. – Daniel

+0

Звучит для меня как плохая идея. –

ответ

6

Ну, это можно сделать, но вы действительно не должны этого делать никогда (на C или C++).

Все, что вам нужно сделать, это позвонить main с массивом String. Вы можете передать массив, поскольку он был первоначально передан, или вы могли бы создать свой собственный массив.

Чтобы выйти из рекурсивного вызова до main, вы должны позвонить по телефону System.exit(), используя код ошибки.

Опять же, я хочу подчеркнуть, что вы должны, вероятно, никогда не делать делать это на любом языке программирования. Вы утверждаете, что иногда вам нужно делать это на C/C++, но это не так. Вы действительно не должны этого делать.

+0

Спасибо @ Даниэль. Но я действительно хотел бы знать, почему это не предлагается. –

+0

@Neferseti Ну прежде всего, вызов main является незаконным в C++. Основная проблема с рекурсивным вызовом 'main' заключается в том, что это идет вразрез с ожиданиями людей. 'main' - это точка входа в программу, и ничего больше. Никто, кто читает ваш код, не ожидает, что 'main' будет вызываться в любое время, кроме записи в ваш код. В любом случае использование для рекурсии состоит в том, чтобы выполнить другую задачу из того, что вы сейчас делаете. Если вы просто пытаетесь перезапустить свою программу, это не очень полезно для рекурсии. Просто используйте цикл. Проверьте [этот ответ] (http://stackoverflow.com/a/7811155/864027) для получения дополнительной информации. – Daniel

+0

Еще раз спасибо @ Daniel. –

Смежные вопросы