À l'aide de int à la Place De String: public static void main (int[] args)
J'étais sous l'impression que la principale méthode devait avoir la forme d'un "public static void main (String[] args){}", que vous ne pouvais pas laisser passer int[] arguments.
Toutefois, dans windows en ligne de commande, lors de l'exécution de la suivante .fichier de classe, il a accepté à la fois int et string comme arguments.
Par exemple, à l'aide de cette commande va donner la sortie de "traverses": "java IntArgsTest limons"
Ma question est, pourquoi? Pourquoi serait-ce code d'accepter une chaîne comme argument sans erreur?
Voici mon code.
public class IntArgsTest
{
public static void main (int[] args)
{
IntArgsTest iat = new IntArgsTest(args);
}
public IntArgsTest(int[] n){ System.out.println(n[0]);};
}
Comme pour tous les autres de la réaction, il ne parvient pas pour moi. Cela n'aide pas que vous n'avez pas dit qui JRE ou le système d'exploitation que vous utilisez, mais je fortement suspect que vous n'exécutez pas ce que vous pensez que vous êtes en cours d'exécution.
OriginalL'auteur Monarch Wadia | 2012-04-17
Vous devez vous connecter pour publier un commentaire.
Tout ce passé dans la principale méthode utilisée par la JVM pour démarrer un programme, est une Chaîne de caractères, de tout. Il peut ressembler à de la int 1, mais c'est vraiment la Chaîne "1", et c'est une grosse différence.
Maintenant avec votre code, ce qui se passe si vous essayez de l'exécuter? Assurez-vous de compiler juste bien car il est valable Java, mais votre méthode principale de la signature ne correspond pas à celui requis par la JVM comme le point de départ d'un programme.
Pour votre code à exécuter, vous devez ajouter un valide principale méthode comme,
Puis passer quelques chiffres lorsque le programme est appelé.
Je peux vous garantir qu'il n'a pas couru. Vous avez peut-être pensé qu'il a couru, mais il n'y a aucun moyen pour que votre code à exécuter dans un compilateur Java standard sans code supplémentaire. Encore une fois, il va compiler, mais il ne sera pas exécuté. Période.
êtes-vous de la compilation d'un .fichier jar? ou une .fichier de classe? ce que j'ai fait a été extrait de l' .fichier de classe de l' .fichier jar, il place sur mon bureau, et l'exécuter dans le cmd.... le fichier a été "IntArgsTest.class". C'est la course pour moi.. c'est pourquoi je suis confus! je pourrais vous envoyer le fichier si vous le souhaitez moi de le prouver.
Ne pas le faire. L'écrire, de le compiler et de l'exécuter dans son état pur.
Ah ok, vais essayer....... par ailleurs, si je lance le fichier de classe avec les arguments, pensez-vous que la JVM ne nécessite pas la principale méthode? donc, je dois passer mon args directement au constructeur de la IntArgsTest classe?
OriginalL'auteur Hovercraft Full Of Eels
Bien, vous pouvez avoir n'importe quelle méthode avec le nom
main
avec un nombre quelconque d'arguments. Mais la JVM va chercher lamain
méthode exacte de la signaturepublic static void main(String[])
.La
main
méthode que vous avez définie est juste une autre méthode de la classe.Je n'ai pas accès à Windows maintenant, mais laissez-moi essayer. J'ai essayé sur Fedora et bien sûr, je suis l'exception suivante:
Noter que la classe serait de compiler amende en raison de ce qui précède dit raisons.
Mise à jour: j'ai testé sur Windows 7 et les résultats sont les mêmes. Je suis surpris de voir comment vous a dit qu'il a travaillé pour vous.
OriginalL'auteur g13n
Ce code ne fonctionnera pas en fait. alors que le code se compile (parce que vous n'avez pas besoin d'un principal à la compilation), lorsque vous le lancez, vous obtiendrez un
"Main method not found"
Erreur.Encore mieux, quand je l'ai couru il a dit
Oui, je l'ai exécuté en ligne de commande (question de fait, Eclipse ne voyez pas cela comme une application Java, de sorte que vous ne pouvez pas exécuter de toute façon, à moins que vous vous fassiez votre propre configuration de l'application). Il n'y a aucune façon dont cela fonctionne, je soupçonne que vous n'avez PAS recompiler entre la commutation de
String args[]
àint args[]
.OriginalL'auteur Youssef G.
Ce code contient public static void main (int[] args) qui ne fonctionne pas. Parce que la JVM prend les valeurs de l'argument comme un chaîne argument. Il ne prend pas d'argument int. Donc, si nous voulons un argument int signifie que nous devons convertir la chaîne d'argument en argument entier. Pour l'exécution de ce code valide principale méthode est nécessaire (ex:public static void main(String args[]))
OriginalL'auteur Ananthi