Ce projet d'anagramme fonctionne tout bien, mais pour quelques exemples comme "Narcissism/one man crisis", la sortie devrait être fausse à cause du "s" supplémentaire dans le narcissisme mais cela revient à la vérité. Je suis nouveau dans le domaine du codage, j'ai juste besoin d'aide pour le comprendre.Super anagramme aide pour java
Heres le code qui prend les entrées:
import java.util.Scanner;
public class SuperAnTester{
public static void main(String[] args){
System.out.println("Enter a phrase: ");
Scanner scan = new Scanner(System.in);
String s1 = scan.nextLine();
System.out.println("Enter a second phrase:");
String s2 = scan.nextLine();
SuperAnagram tester = new SuperAnagram(s1,s2);
System.out.println(tester.isSuperAnagram());
}
}
ici est la partie du testeur:
public class SuperAnagram{
public String s1;
public String s2;
public char s1Array[];
public char s2Array[];
public SuperAnagram(String firstStr, String secondStr){
s1=firstStr;
s2=secondStr;
}
public void s1Char(){
s1=s1.toLowerCase();
s1Array=s1.toCharArray();
}
public void s2Char(){
s2=s2.toLowerCase();
s2Array=s2.toCharArray();
}
public boolean isSuperAnagram(){
s1Char();
s2Char();
boolean isSuperAnagram=false;
if (s1Array.length > s2Array.length){
isSuperAnagram=false;
return isSuperAnagram;
}
else{
for (int x=0; x<s1Array.length; x++){
char let = s1Array[x];
for (int j=0; j < s2Array.length; j++){
if (s2Array[j] == let){
isSuperAnagram = true;
s2Array[j]= ' ';
}
}
}
}
return isSuperAnagram;
}
}
Existe-t-il des restrictions sur les classes ou les méthodes que vous êtes autorisé à utiliser? Il existe un moyen beaucoup plus simple de vérifier les anagrammes. –
Il est aussi plus évidemment pas un anagramme en raison de la "o" –
Donc vous définissez 'isSuperAnagram' à' true' si 'si (s2Array [j] == let)' est vrai ... et ce qui se passe si le prochain vérifier sont tous faux pour tous les autres char? Ne le ferait-il pas pour le réinitialiser (ou retourner directement 'false') quand vous ne pourriez pas trouver un caractère correspondant à' let'? – Tom