ci-dessous est mon code pour supprimer des caractères survenant consécutivement dans une chaîne mais n'a pas obtenu le résultat attendu ...
import java.util.*; import java.lang.*; import java.io.*; class GFG { public static void main (String[] args) { Scanner sc= new Scanner(System.in); int t=sc.nextInt(); while(t-->0){ String name= sc.next(); char[] c = new char[name.length()]; int j=0; boolean check=true; //looping through the array to find duplicates for(int i=0;i<name.length()-1;i++){ if(name.charAt(i)==name.charAt(i+1)){ continue; } else{ c[j]=name.charAt(i); j++; check=false; } } //printing the char array if(check==true){ System.out.println(name); }else{ for(int i=0;i<j+1;i++){ System.out.print(c[i]); } System.out.print(name.charAt(name.length()-1)); System.out.println(); } } } }
4 Réponses :
Vous pouvez utiliser cette approche:
class GFG { public static void main (String[] args) { Scanner sc = new Scanner(System.in); String name = sc.next(); String result = ""; if (name.length() > 0) result += name.charAt(0); //looping through the array to find duplicates for (int i = 1; i < name.length(); i++){ if (name.charAt(i) == name.charAt(i - 1)){ continue; } else { result+=name.charAt(i); } } //printing the result System.out.print(result); } }
Gardez toujours les points suivants à l'esprit pendant l'écriture de code:
URL code>, html code> etc. li>
- affiche le message correspondant avant de demander n'importe quelle entrée; Sinon, l'utilisateur continue de deviner si une entrée est requise par le programme. LI>
- Où que vous soyez nécessaire, mettez des commentaires dans le code afin que le lecteur puisse comprendre votre programme facilement. LI>
ol>
exemple de code: p> xxx pré> un échantillon exécuté: strong> p> xxx pré> < / p>
Une alternative pourrait être d'utiliser des flux Java 8.
Étapes: P>
intrestre code> à partir de index = 1 code> jusqu'à la fin. (Étant donné que la valeur de résultat est initialement égale au caractère à l'index 0) li>
- ajoutez le caractère au résultat final s'il ne correspond pas au dernier caractère vu. Li>
ol>
xxx pré> Remarque: il utilise une concaténation de chaîne simple. P> p>
OK, il y a quelques problèmes avec votre code.
Étiqueons les numéros de ligne comme ci-dessous: P>
01 StringBuilder sb = new StringBuilder(); 02 int lastChar = 65537; // This char will never exist as char is 16 bits in Java. 03 for (int i = 0; i < name.length(); i++) { 04 char c = name.charAt(i); 05 if (c != lastChar) // perform int comparison so first char will be picked up. 06 { 07 sb.append(c); 08 lastChar = c; // widens c into an int. 09 } 10 } 11 System.out.println(sb.toString());
Veuillez utiliser l'organe de la question pour poser une question et un bref poser quel problème êtes-vous confronté?
Pourriez-vous décrire le problème que vous faites face à votre code? N'a-t-il pas compiler, renvoie différents résultats que prévu (pour quelle entrée et quel est le résultat incorrect)?
Le problème de mon code est que cela ne produit pas de résultats en cas de multiples cas de test. Le code s'arrête après avoir produit la production de certains cas de test.
Ne fournissez pas de telles informations dans des commentaires! Veuillez lire exemple de reproductible minimal et améliorer votre question en conséquence.
Et indice: utilisez plus d'un caractère pour vos variables. Ce n'est pas une formule mathématique! Le code doit être lu par des humains, il n'ya aucun point dans les abréviations comme celle-là.
@ Quest275 - Si l'une des réponses résolvait votre problème, vous pouvez aider la communauté en marquant cela comme accepté. Une réponse acceptée aide les futurs visiteurs à utiliser la solution avec impatience.