2015-11-25 12 views
6

Nie mogłem się naprawdę wyjaśnić w tytule, co miałem na myśli - uzyskać ciąg i sprawdzić każdą literę i wydrukować, jeśli następny znak w ciągu jest również następną literą w kolejności ABC, na przykład „almndrefg” zwróci „lmnefg”, co zrobiłem do tej pory:Drukowanie tylko liter według kolejności ABC z ciągu

package strings; 

import java.util.Scanner; 

public class P58Targil7 { 
    public static Scanner in = new Scanner(System.in); 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     String st2 = in.next(); 
     check(st2); 
    } 

    public static void check(String st1) { 
     char sec,fir; 
     for (int i = 0; i < st1.length() - 1; i++) { 
      sec = st1.charAt(i + 1); 
      fir = st1.charAt(i); 
      sec--; 
      if (fir == sec) 
       System.out.print(fir); 
     } 
    } 
} 

co mam rację?

+0

trzymać tablicę wszystkich możliwych znaków (26 lub 52, jeśli chcesz i być traktowane inaczej) i sprawdzić, czy ktoś tam był już wydrukowany. – Stultuske

+6

Jaka jest "lmnefg" w porządku ABC? – Maroun

+0

Jakie jest obecne zachowanie? –

Odpowiedz

3

Masz mały błąd, ponieważ zwiększyłeś sec zamiast fir.

Ponadto należy obsługiwać drukowanie drugiej litery w każdej kolejnej parze i upewnić się, że każda litera jest drukowana tylko raz.

char sec,fir; 
    boolean lastPrinted = false; 
    for (int i = 0; i < st1.length() - 1; i++) { 
     fir = st1.charAt(i); 
     sec = st1.charAt(i + 1); 
     if (fir + 1 == sec) { 
      if (!lastPrinted) { 
       System.out.print(fir); 
      } 
      System.out.print(sec); 
      lastPrinted = true; 
     } else { 
      lastPrinted = false; 
     } 
    } 
+0

Nigdy nie zresetować lastPrinted do wartości false w (nieistniejącej) instrukcji else. Rozważ także użycie nawiasów klamrowych dla ifs, nawet jeśli zawiera tylko jedną instrukcję, ponieważ prowadzi to do mniejszej liczby błędów podczas późniejszej edycji lub czytania. –

+0

Dzięki, znalazłem błąd i naprawiłem go, ale nadal nie działa, skopiowałem twój kod, a dla ciągu odesłał on tylko abcn, nie zawiera M, co powinienem zrobić dalej? תודה גבר: P – DAVIDBALAS1

+0

Dziękujemy! naprawiłem to, toda. – DAVIDBALAS1

Powiązane problemy