2017-09-01 1 views
-2

J'ai 2 classes dans le dossier java dans IntelliJ (je veux dire deux fichiers différents):Comment appeler la méthode qui compare deux chaînes d'une autre classe (package)?

Main.class et Fields.class

Dans Fields.class je veux juste sauver tous les champs que je teste sur mon application (nom, prénom, téléphone, etc.) Par exemple:

String a1 = "Tom"; 
String b1 = "James"; 

Dans Main.class i écrire du code et d'essayer d'appeler des méthodes. Par exemple je veux écrire la méthode qui сompares 2 chaînes de Fields.class. Mon résultat ici:

public class Main { 
public static void main(String[] args) { 

    String var1; 
    String var2; 

    class equalsM { 
      void equalsMethod(String a1, String b2) { 
      if (a1.equals(b1)) System.out.println("OK"); 
      else System.out.println("Bad"); 
     } 
    } 

Je veux écrire une méthode et une fois appeler cette méthode chaque fois que je besoin ..

Mon problème: je ne facturons sais comment je peux appeler la méthode equalsMethod dans mon principal .class et comparer les chaînes de Fields.class

Je lis le livre de Herbert Schildt et ne comprennent toujours pas quelques notions de base ...

+0

Votre méthode equalsMethod n'est pas une méthode de la classe principale. C'est une méthode d'une classe interne locale equalsM définie à l'intérieur de la méthode principale de la classe Main. Définissez la méthode directement dans la classe Main. Rendre statique car c'est une méthode d'utilité pure, ne nécessitant pas l'accès à l'état de n'importe quelle instance de Main. Rendez-le public aussi, afin qu'il soit visible de n'importe où, et appelez-le de n'importe où en utilisant Main.equalsM (...). Ce sont des choses de base qui sont couvertes par n'importe quel livre Java d'introduction, ou le tutoriel Java. Lisez cela avant de poser des questions. https://docs.oracle.com/javase/tutorial/java/javaOO/index.html –

+0

Merci, mais je veux utiliser les données de Fields.java dans Main.java.Cela ne résout pas mon problème – Kos

+0

Si ce n'est pas le cas Pour résoudre le problème, cela signifie que vous avez fait quelque chose de mal. Mais vous n'avez pas posté votre tentative, il est donc impossible de dire quoi. Vous ne pouvez pas avoir lu et digéré le didacticiel Java auquel je me suis connecté en si peu de temps. Alors prenez du recul et lisez. Soigneusement. –

Répondre

0

L'appel d'une méthode dépend de son statut. Il existe deux types de méthodes: les méthodes d'instance et de classe. La méthode Instance peut être appelée uniquement avec une instance, tandis que les méthodes de classe peuvent être appelées sur la classe (instanciée ou non).

Premier.

Lorsque vous définissez:

class equalsM { 
    void equalsMethod(String a1, String b2) { 
     if (a1.equals(b1)) System.out.println("OK"); 
     else System.out.println("Bad"); 
    } 
} 

Vous définissez une classe avec une méthode d'instance equalsMethod. Pour appeler, vous devez instancier la classe:

equalsM i = new equalsM(); 
i.equalsMethod("foo","bar"); 

Il est sans doute pas ce que vous attendez parce instancier une telle classe pour quelque chose qui se comportent comme une fonction n'est pas necssary. Vous avez probablement besoin d'une méthode statique, comme:

class equalsM { 
    static void equalsMethod(String a1, String b2) { 
     if (a1.equals(b1)) System.out.println("OK"); 
     else System.out.println("Bad"); 
    } 
} 

auquel cas il pourrait appeler simplement:

equalsM.equalsMethod("foo","bar"); 

deuxième. N'utilisez pas de classe interne pour un tel besoin, définissez votre classe equalsM à l'extérieur et utilisez-la comme suggéré.

Troisième. Épelez vos classes comme il est suggéré dans de nombreuses conventions: EqualsM (majuscule en première lettre)

Comme commenté, votre conception est très mauvaise, je vous suggère de lire sur base OOP.

+0

Lorsque j'écris: static void equalsMethod (Chaîne a1, Chaîne b1) { if (a1.equals (b1)) System.out.println ("OK"); else System.out.println ("Mauvais"); } Je reçois une erreur. Impossible de résoudre le symbole a1, b1 – Kos

+0

Merci. Mais comment puis-je utiliser les données de Fields.java dans mon projet Main.java? Comment puis-je appeler ma méthode et utiliser les données de Fields.java? C'est impossible? – Kos

+0

Nous n'avons aucun code pour votre classe 'Fields'. –

0

Si vous n'avez pas besoin de définir une classe interne, vous pouvez utiliser la méthode statique pour exécuter votre code ou vous pouvez utiliser les exemples ci-dessus suggérés par d'autres.

public class Main { 

    public static void main(String[] args) { 

     Fields field = new Fields(); 

     String var1 = field.a1; 
     String var2 = field.b1; 
     equalsMethod(var1,var2); 
    } 

    private static void equalsMethod(String var1, String var2) { 
     if (var1.equals(var2)) { 
      System.out.println("OK"); 
     } 
     else { 
      System.out.println("Bad"); 
     } 
    } 
}