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:
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");
}
}
}
Usa las etiquetas code.
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
Seria asi
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);
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 ??
te refieres a algo asi
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.