Ayuda Con charAt

Iniciado por SrTrp, 12 Abril 2018, 05:58 AM

0 Miembros y 1 Visitante están viendo este tema.

SrTrp

Bueno estoy haciendo un programa el cual requiero sabes si en una palabra se encuentra el abecedario ordenado pero en distinta posision por ejemplo si esta abcdefghijklmnopqrstuvwxyz estaría bien al igual que pqrstuvwxyzabcdefghijklmno tambien pero si es asjdikasj ahi estaría mal y me el siguiente error
aqui el error es en la  LINEA 20

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 9
at java.lang.String.charAt(String.java:658)
at OmegaUp.abecedario.main(abecedario.java:30)
C:\Users\SrTrp\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 5 seconds)


y este es mi código
Código (java) [Seleccionar]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class abecedario {
    public static void main(String[] args) throws IOException {
       BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
       String abc = "abcdefghijklmnopqrstuvwxyz";
       int n = Integer.parseInt(bf.readLine());
       String[] palabras = new String[n];
       boolean[] status = new boolean[n];
       int cc=0, ultimo=0;
       for(int i = 0;i<n;i++){
           palabras[i] = bf.readLine();
       }
       for(int i =0;i<palabras.length;i++){
           String pal = palabras[i];
          for(int j =0;j<26;j++){
              if(pal.charAt(j)==abc.charAt(cc)){
                  status[i]=true;
                  cc++;
                  ultimo=1;
              }else{
                  status[i]=false;
                  ultimo=0;
              }
            if(j==(abc.length()-1)){
               if(ultimo!=0){
                   j=0;
               }
            }  
       }
    }
       for(int i=0;i<status.length;i++){
              if(status[i]==true){
                  System.out.println("Correcto");
              }else{
                  System.out.println("Incorrecto");
              }
          }
   }






srWhiteSkull

Tienes funciones que hacen eso,

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#contains(java.lang.CharSequence)

Aparte el programa que muestras tiene un mal diseño. El error te indica que te estás saliendo de los límites de la cadena, estás leyendo fuera de la cadena.