/ / Comment vérifier si un mot contient une lettre ou un groupe de lettres? - java, chaîne, instruction if, retour

Comment vérifier si un mot contient une lettre ou un groupe de lettres? - java, chaîne, instruction if, retour

Je travaille sur un programme pour ma classe CompSci Iet je suis entièrement coincé. La tâche consiste à utiliser des instructions if pour vérifier si une chaîne particulière contient une lettre ou un groupe de lettres. J'ai une classe créée pour cela et j'ai tout présenté, mais je ne sais pas comment commencer la recherche des caractères. Je suis vraiment nouveau dans les méthodes Strings et Return. J'ai déjà cherché des questions similaires, mais aucune n'a vraiment aidé avec ce que je cherchais. J'apprécierais de l'aide.

Mon code jusqu'à présent: Principal:

import static java.lang.System.*;

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

}
}

StringChecker:

import static java.lang.System.*;
public class StringChecker {

private String check;

public void StringChecker()
{
check = "";
}

public void StringChecker(String s) //constructor
{
check = s;
}

public void setString(String s) //set string
{
check = s;
}

public boolean letterExists(char a)
{
return false;
}

public boolean findSubString(String s)
{
return false;
}

public String toString()
{
return check +"nn";
}
}

Réponses:

0 pour la réponse № 1

J'ai fourni un exemple de travail grossier (ilcompile) Vous pouvez l'adapter à une situation multi-fichiers main + classe comme vous le souhaitez. Mais main peut aussi être dans le même fichier qu'une définition de classe (mais uniquement dans l'un de vos fichiers de définition de classe, car il ne peut y avoir qu'un seul main).

Vous pouvez le compiler comme:

javac StringChecker.java

Vous pouvez le tester sur la ligne de commande avec quelque chose comme:

java StringChecker stringxyztocheck

C'est le code source:

import java.lang.System.*;
import java.util.*;

public class StringChecker {

public static void main (String[] args) {
String fullString = args[0];
String subString = "xyz";

if (fullString.length() < subString.length()) {
System.out.println(""" + subString + "" not found in "" + fullString + """);
System.exit(0);
}
int i = 0;
do {
if (fullString.charAt(i) == subString.charAt(0) &&
fullString.charAt(i + 1) == subString.charAt(1) &&
fullString.charAt(i + 2) == subString.charAt(2)) {
System.out.println(""" + subString + "" is present in "" + fullString + """);
System.exit(0);
}
} while (i++ < fullString.length() - subString.length());

System.out.println(subString + "not found in "" + fullString + """);
System.exit(0);
}
}

OK, maintenant pour la conférence :-)

Vous avez dit «méthode de retour». revenir est une déclaration, pas une méthode. Important de connaître la différence.

De plus, en Java, vous pouvez initialiser vos variablesstatiquement dans la définition de classe. Vous n'avez pas besoin de le faire dans le constructeur pour votre cas simple, vous pouvez écrire String check = "" dans la définition.

L'exemple ci-dessus est grossier et de mauvaise forme. Je n'écrirais jamais un programme réel de cette façon, c'est juste une preuve de concept. J'évite donc autant que possible d 'utiliser des indicateurs, des variables, des fonctions et des boucles.

J'ai utilisé do ... while ().Cette forme de boucle n'est généralement ni préférée ni nécessaire et rend le code plus difficile à lire et à maintenir qu'une boucle for qui montre la condition en haut. Vous pouvez généralement (et devriez généralement) trouver un moyen de structurer vos boucles dans une forme qui fonctionne avec for () plutôt que do / while. Vous pouvez généralement organiser efficacement les boucles au format for () en utilisant des indicateurs booléens ou des vérifications nulles.

Cet exemple ne tient pas compte d'un arbitrairelength sous-string (parce que nous "utilisons une instruction if, elle deviendrait donc extrêmement longue pour les sous-chaînes longues, et extrêmement complexe si les instructions if pour gérer des sous-chaînes de longueur variable)

Un autre problème qui rend cet exemple de mauvaise forme estqu'il ne crée pas de fonction pour gérer les choses qui sont répétées dans tout le code (comme une fonction qui vérifie une valeur et imprime une instruction).


1 pour la réponse № 2

Vous pouvez simplement utiliser la méthode contains duString-class, qui implémente déjà le comportement souhaité. Mais je suppose que le but de cette tâche est d'apprendre à le faire. Une approche de base consiste donc à parcourir tous les caractères de la chaîne et à les comparer avec votre personnage cible. Vous pouvez obtenir la longueur de la chaîne avec la méthode length () et la méthode charAt (int) vous donne le caractère à la position donnée. Cela pourrait donc ressembler à ceci:

for (int i = 0; i < check.length(); i++() {
if (check.charAt(i) == a) return true;
}
return false;

Vous pouvez développer à partir de cela pour vérifier les sous-chaînes.


0 pour la réponse № 3

Si vous n'êtes pas autorisé à utiliser String.contains ():

Vous devez boucler sur chaque caractère de votre chaîne. Vous pouvez utiliser String.charAt (int i) pour obtenir le caractère unique à la position i.

Pour rechercher une sous-chaîne, vous devez effectuer une boucle sur les deux chaînes.

Avec l'instruction if, vous vérifiez simplement si deux caractères sont égaux. Dans ce cas, vous avez trouvé une occurrence.


0 pour la réponse № 4

Je crois que ce que tu cherches est le Classe de chaîne. En particulier, vous regardez le .contains(CharSequence s) méthode. Ci-dessous, un exemple de la façon dont vous pouvez le faire pour votre scénario (en utilisant les instructions if)

boolean characterCheckString = false;
String myString = "abcde";
if(myString.contains("a")) {
characterCheckString = true;
}

En savoir plus sur cette méthode ici.


0 pour la réponse № 5

Un moyen simple de le faire serait d'utiliser le contains méthode de la Classe de chaîne. Si vous souhaitez le faire manuellement, utilisez le substring pour vérifier toutes les sous-chaînes possibles correspondant à la longueur de la chaîne que vous recherchez. Utilisez le equals méthode de comparaison. Assurez-vous que lors de l'itération sur la chaîne, elle s'étend plus loin que le dernier index.