0
votes

Imprimez aline avec le premier 'c' '' c '' d 'ou' d 'enlevé

J'essaie d'imprimer une aline avec la première instance 'C' 'C' 'D' ou "D" enlevé. Cependant, je suis limité à l'utilisation de l'index de la chaîne, du charat, de la longueur, de la comparète, de la TUPPERCASE, du TolowerCase, de la garniture, des égaux, des méthodes EqualSignorecase et de sous-chaîne. Supposons que vous puissiez entrer n'importe quelle chaîne vous aimez.

J'ai réalisé enlever "C". Cependant, s'il y a une "D" avant le "C", il enlève toujours le "C". J'ai essayé d'établir des indices des lettres. J'ai essayé d'utiliser si des déclarations ainsi que de désignées si des déclarations dans les limites et pour les boucles. Les résultats sont les mêmes. P>

int c = aLine.indexOf('c');
int upperC = aLine.indexOf('C');
int d = aLine.indexOf('d');
int upperD = aLine.indexOf('D');

for (int i = 0; i < aLine.length(); i++) {
    if (c >= 0 || upperC >= 0 || d >= 0 || upperD >= 0) {
        if (c >= 0) {
            String string1 = aLine.substring(0, c);
            String string2 = aLine.substring(c + 1, length);
            System.out.println(string1 + string2);
            break;
        } else if (upperC >= 0) {
            String string1 = aLine.substring(0, upperC);
            String string2 = aLine.substring(upperC + 1, length);
            System.out.println(string1 + string2);
            break;
        } else if (d >= 0) {
            String string1 = aLine.substring(0, d);
            String string2 = aLine.substring(d + 1, length);
            System.out.println(string1 + string2);
            break;
        } else if (upperD >= 0) {
            String string1 = aLine.substring(0, upperD);
            String string2 = aLine.substring(upperD + 1, length);
            System.out.println(string1 + string2);
            break;
        } else {
            System.out.println("The original String has no leading or trailing whitespace.");
            break;
        }


3 commentaires

Boucle sur chaque personnage, ajoutant chaque caractère à un stringbuilder jusqu'à ce que vous rencontriez un C , d , c , ou d . Une fois que vous le trouvez, vous pouvez ignorer cet index via Continuer et permettre à la boucle d'ajouter le reste des caractères. Le stringbuilder contiendra ensuite la chaîne d'origine, mais avec la première occurrence de majuscules / minuscules C ou D supprimée. StringBuilder est uniquement là pour réduire la création d'objets - vous pouvez le faire sans stringbuilder en concaténant simplement.


Merci pour votre réponse. Mais je n'ai pas été autorisé à utiliser StressBuilder.


Vous n'avez pas à utiliser stringbuilder - c'est juste pour l'optimisation, pas pour faciliter. Vous pouvez simplement + = pour le concaténer à une chaîne existante. C'est juste que tout temps vous concaténate, vous sont Création d'un StringBuilder , donc techniquement, votre code utilise déjà stringbuilder . Cependant, ma suggestion peut être facilement réalisée sans explicitement en utilisant un stringbuilder .


4 Réponses :


0
votes

Vous devez comparer Wich One est le premier.

permet de dire que votre mot est "dcvsmarvel"

Dans ce cas, D est 0 et C est 1.

si insté de Si (C> = 0) {

Il devrait inclure la condition

si (c> = 0 && (C

espère qu'il aide


0 commentaires

0
votes

Une autre solution plus simple consiste à vérifier chaque char de la chaîne dans l'ordre et une fois que vous avez trouvé un qui remplit une des conditions, faites la chose et la pause. Pour cela, n'utilisez pas l'index du début


0 commentaires

1
votes

Je garderais cela simple: xxx

notes:

  1. Les deux premières instructions d'impression sont impression , pas println
  2. Seconde Substring utilise le formulaire avec seulement Index de démarrage
  3. println est utilisé après que les deux parties de la chaîne sont imprimées

1 commentaires

Merci @ilya Bursov. Ya je faisais trop. Ceci est beaucoup plus rationnel et efficace.



0
votes

Pour éviter de rechercher des majuscules et des minuscules, vous devez créer une copie minuscule de aline code> - vous ne vous inquiétez que du type de lettre, pas de la capitalisation de la lettre.

boolean skipped = false;
String result = "";
for(int i = 0; i < lowered.length(); i++) {
    char letter = lowered.charAt(i);

    if(!skipped && (letter == 'c' || letter = 'd')) {
        skipped = true;
    } else {
        result += letter;
    }
}


0 commentaires