Foro de elhacker.net

Programación => Java => Mensaje iniciado por: SrTrp en 12 Abril 2018, 05:58 am



Título: Ayuda Con charAt
Publicado por: SrTrp en 12 Abril 2018, 05:58 am
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
Código:
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
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5.  
  6. public class abecedario {
  7.     public static void main(String[] args) throws IOException {
  8.        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
  9.        String abc = "abcdefghijklmnopqrstuvwxyz";
  10.        int n = Integer.parseInt(bf.readLine());
  11.        String[] palabras = new String[n];
  12.        boolean[] status = new boolean[n];
  13.        int cc=0, ultimo=0;
  14.        for(int i = 0;i<n;i++){
  15.            palabras[i] = bf.readLine();
  16.        }
  17.        for(int i =0;i<palabras.length;i++){
  18.            String pal = palabras[i];
  19.           for(int j =0;j<26;j++){
  20.               if(pal.charAt(j)==abc.charAt(cc)){
  21.                   status[i]=true;
  22.                   cc++;
  23.                   ultimo=1;
  24.               }else{
  25.                   status[i]=false;
  26.                   ultimo=0;
  27.               }
  28.             if(j==(abc.length()-1)){
  29.                if(ultimo!=0){
  30.                    j=0;
  31.                }
  32.             }  
  33.        }
  34.     }
  35.        for(int i=0;i<status.length;i++){
  36.               if(status[i]==true){
  37.                   System.out.println("Correcto");
  38.               }else{
  39.                   System.out.println("Incorrecto");
  40.               }
  41.           }
  42.    }
  43.  
  44.  





Título: Re: Ayuda Con charAt
Publicado por: srWhiteSkull en 15 Abril 2018, 14:19 pm
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.