Ayuda con codigo de java

Iniciado por pakosamuel, 5 Junio 2010, 03:32 AM

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

pakosamuel

Pues lo que quiero hacer es mediante uso de excepciones y flujos que me cuente las letras de un archivo al que se le debe mandar llamar y que me manda una excepcion si es que falta alguna letra del abecedario..
el codigo que tengo es este:
Código (java) [Seleccionar]

import java.io.*;
import javax.swing.*;
public class ex2 {
   public static void main(String[] args)   {
String s;
int lineas=1;
try {

   String nomarch=JOptionPane.showInputDialog("Ruta y nombre archivo:");
FileInputStream archivo=new FileInputStream(nomarch);
InputStreamReader isr=new InputStreamReader(archivo);
BufferedReader leer=new BufferedReader (isr);
String b=leer.readLine();
while (b!=null){

System.out.println(b);
b=leer.readLine();

String salida="";
int abc[]=new int[26];
for (int i=0;i<nomarch.length();i++)
{ int codcar=nomarch.charAt(i);
if ((codcar>=96)&&(codcar<=123))
{ int pos=codcar-97;
abc[pos]++;
}
}
for (int i=0;i<abc.length;i++)
 if (abc[i]>0) { char car=(char) (i+97);
  salida+="Letra "+car+" aparece "+abc[i]+"\n";
  }  
if (b==null) JOptionPane.showMessageDialog(null,salida);
}
}

       catch (IOException exc) {
   System.err.println(exc);
   System.out.println("Asegurate de haber escrito la extension y ruta del archivo");  
}

finally {
System.out.println("\n");    
}  
  }
}

Blitzkrieg'




pakosamuel

Mira ya cambie completamente el codigo

   import java.io.*;
   import javax.swing.*;
   class LeeFichero {
   public static void main(String [] arg) {
   
      try {
            String nomarch=JOptionPane.showInputDialog("Ruta y nombre archivo:");
            FileInputStream archivo=new FileInputStream(nomarch);
            InputStreamReader isr=new InputStreamReader(archivo);
            BufferedReader leer=new BufferedReader (isr);
            String linea;
            
            while((linea=leer.readLine())!=null) {
               System.out.println(linea);
               System.out.println(linea.length());
               }
            
            isr.close();
         }
            
      catch(IOException e){
         System.out.println(e);
            }
      
      }
   
   }

Ahora el problema es que me dice cuantas letras tiene cada linea, y lo que yo quiero es que me diga cuantas letras tiene todo el texto y que no se vaya linea por linea, en que estoy mal

Leyer

#3
Seria asi
       
Código (java) [Seleccionar]
int c =0;
        while((linea=leer.readLine())!=null) {
          char chars[]=linea.toCharArray();
          for(int index=0;index<chars.length;index++){
          if(Character.isLetter(chars[index])){
          c++;
          }
         
          }
           }
        System.out.println("Archivo:"+nomarch);
        System.out.println("Nro. de Letras: "+c);

       

pakosamuel

Muchas gracias eso me sirvio de mucho, pero, como puedo pedirle que me diga si estan todas las letras minusculas osea de todo el abecedario y si falta una que me mande una excepcion ??

Leyer

#5
te refieres a algo asi

Código (java) [Seleccionar]
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.SortedSet;
import java.util.TreeSet;
import javax.swing.JOptionPane;
public class LeeFichero {
public static void main(String [] arg) {
  try {
        String nomarch=JOptionPane.showInputDialog("Ruta y nombre archivo:");
        FileInputStream archivo=new FileInputStream  (nomarch);
        InputStreamReader isr  =new InputStreamReader(archivo);
        BufferedReader leer    =new BufferedReader   (isr);
        String linea;
        int c =0;
        ArrayList<Character> arrayList = new ArrayList<Character>();
        while((linea=leer.readLine())!=null) {
        char chars[]=linea.toCharArray();
          for(int index=0;index<chars.length;index++){
          if(Character.isLetter(chars[index])){
          arrayList.add(chars[index]);
          c++;
          }          
          }
        }
        isr.close();
        leer.close();
      SortedSet<Character> characters = new TreeSet<Character>();
      Iterator<Character> interator = arrayList.iterator();
      while(interator.hasNext()){
      characters.add(interator.next());
      }
        System.out.println("Archivo: "+nomarch);
        System.out.println("Nro. de Letras: "+c);
      if(characters.size()<26){
      throw new Exception("Error...Faltan letras del abecedario");
      }else
      System.out.println("Abecedario completo.");
     }
  catch(IOException e){
     System.out.println(e);
        } catch (Exception e) {
     e.printStackTrace();
        }
    }
}


PD: mi logica puede que no la entiendas,es la forma mas simple que se me ocurrio

Saluidos.