2012-02-02 3 views
-5

Comment se fait-ce morceau de code montre la compilation-vide d'erreur est un type non valide pour la variable testappeler une méthode statique

public class Tester{ 
     public static void main(String[] args){ 
      static void test(String str){ 
     if (str == null | str.length() == 0) { 
      System.out.println("String is empty"); 
     } 
     else { 
      System.out.println("String is not empty"); 
     }} 
     test(null); 
+0

Strings Re objets, et si vous voulez comparer la valeur des objets dont vous avez besoin. Equals(), sinon vous comparez des références. – Hidde

+1

si l'un des opérandes est null == works et vous devriez l'utiliser car si votre str est nul, str.equals (null) lancera une exception NullPointerException -1 pour commenter – shift66

+0

Déplacez votre méthode 'test' de la main 'la méthode –

Répondre

0

Vous ne pouvez pas déclarer une méthode dans une autre méthode. Enlever test de main. Et vous ne pouvez pas non plus appeler une méthode de la classe. test(null); doit être à l'intérieur d'une méthode, disons principal.

public class Tester{ 
     public static void main(String[] args){ 
      test(null); 
     } 

     static void test(String str){ 
     if (str == null | str.length() == 0) { 
      System.out.println("String is empty"); 
     } 
     else { 
      System.out.println("String is not empty"); 
     } 
     } 
4

Vous essayez de déclarer une méthode (test) dans une autre méthode (main). Ne fais pas ça. Déplacer test() être dans la classe directement:

public class Tester{ 
    public static void main(String[] args) { 
    test(null); 
    } 

    static void test(String str) { 
    if (str == null | str.length() == 0) { 
     System.out.println("String is empty"); 
    } else { 
     System.out.println("String is not empty"); 
    } 
    } 
} 

(Notez que j'ai également fixé l'indentation et d'espaces Il existe différentes conventions que vous pouvez utiliser, mais vous devez être cohérent et plutôt plus claire que le code. votre question a montré.)

+0

merci, éclaircir le concept et sur les conventions de code – coderaider

0

Votre test de méthode est dans une autre méthode.

Il suffit de mettre la méthode de test en dehors de votre principale.

+0

merci, je l'ai eu – coderaider

0
public class Tester{ 

    public static void test(String str){ 
     if (str == null || str.length() == 0) { 
      System.out.println("String is empty"); 
     } 
     else { 
      System.out.println("String is not empty"); 
     } 
    } 

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

} 

Vous devez également ajouter le double ou l'opérande (||) afin de fonctionner correctement sans erreur d'exception de pointeur nul.

+0

oui, merci raté celui-là – coderaider

0

Vous déclarez la méthode de test dans la méthode principale. Donc, séparez la méthode de test de main. NE PAS comparer les chaînes avec ==, plutôt avec .equals().

public class Tester 
{ 
    public static void test(String str) 
    { 
     if (str == null || str.length() == 0) 
     { 
      System.out.println("String is empty"); 
     } 
     else 
     { 
      System.out.println("String is not empty"); 
     } 
    } 

    public static void main(String[] args) 
    { 
     test(null); 
    } 
} 
Questions connexes