correcteur de frappe:je bloque aidez moi!!!

 
Poster un nouveau sujet   Répondre au sujet    iprelax.fr Index du Forum -> Java
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
defman
dummy mioche
dummy mioche


Inscrit le: 27 Mar 2004
Messages: 1

MessagePosté le: Sam Mar 27, 2004 12:52 am    Sujet du message: correcteur de frappe:je bloque aidez moi!!! Répondre en citant

voici la consigne
Ecrire un programme qui corrige la typographie d'un fichier, c'est- a-dire ecrit un fichier
corrige a partir d'un fichier de depart en respectant les regles suivantes :
(a) une phrase commence par une majuscule
(b) les symboles :, ;, ? et ! sont suivis et precedes par un espace
(c) les symboles . et , sont suivi par un espace, mais ne sont jamais precedes par un
espace.
On aura interet a utiliser un StringBuffer pour accelerer les traitements

import java.io.*;
import javax.swing.*;
public class Correcteur{
public static void main(String[] args) throws IOException {
JFileChooser chooser = new JFileChooser();
int choix;
do {
choix=chooser.showSaveDialog(null);
} while (choix!=JFileChooser.APPROVE_OPTION);
FileWriter ecrivainBase=new FileWriter(chooser.getSelectedFile());
PrintWriter ecrivain=new PrintWriter(new BufferedWriter(ecrivainBase));
BufferedReader lecteur=new BufferedReader(new FileReader("Correcteur.txt"));
String s=lecteur.readLine();
System.out.println(s.charAt(0));
StringBuffer sb1=new StringBuffer();//creation d'un stringbuffer vide
// dans laquelle on reecrit la chaine s corrigée


//traitement de la première lettre du fichier
int i=0;
char e=s.charAt(i);
while (!Character.isLetter(e)){//tant que le ième caractère n'est pas une lettre on
//continue de parcourir les caractere de la chaine correspondant à la première ligne du fichier
i++;
}
e=Character.toUpperCase(e);//qd le ième caractere est une lettre, c'est à dire qd on
//arrive à la première lettre du fichier on la met sous forme majuscule
sb1.setCharAt(i,e);//puis on la remplace avec l'ancienne qui etait en minuscule


while (s!=null){
for(int j=1;j<s.length();j++){
char c=s.charAt(j);
System.out.println(c);
char d=s.charAt(j-1);
sb1.append(c);
System.out.println(sb1);

if (c==':')
if (d!=' ')
{
sb1.setCharAt(j,' ');
sb1.append(": ");
}

if (c=='?')
if (d!=' ')
{
sb1.setCharAt(j,' ');
sb1.append("?");
}


if (c=='!')
if (d!=' ')
{
sb1.setCharAt(j,' ');
sb1.append("!");
}

if (c==';')
if (d!=' ')
{
sb1.setCharAt(j,' ');
sb1.append(";");
}




if (c=='.')
if (d==' ')
{
sb1.setCharAt(j-1,'.');
sb1.setCharAt(j,' ');
}

if (c==',')
if (d==' ')
{
sb1.setCharAt(j-1,',');
sb1.setCharAt(j,' ');
}

if (Character.isLetter(c))
if (d=='.')
{
sb1.setCharAt(j,' ');
c=Character.toUpperCase(c);
sb1.append(c);
}
if (d==',')
{
sb1.setCharAt(j,' ');
sb1.append(c);
}

}


s=lecteur.readLine();

}ecrivain.println(sb1);
lecteur.close();
ecrivain.close();
}
}



pas de probleme a la compilation mais erreur d'execution! apparemment il y a un pb d'indice mais je ne vois pas pourquoi!
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
akio
dummy mioche
dummy mioche


Inscrit le: 03 Avr 2004
Messages: 4
Localisation: Toulouse / La Rochelle / Angoulême

MessagePosté le: Sam Avr 03, 2004 7:25 pm    Sujet du message: Répondre en citant

Pour y voir + clair, peut être peut tu récupérer la pile d'éxécution et le type de l'exception?
_________________
Un clavier azerty en vaut deux
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    iprelax.fr Index du Forum -> Java Toutes les heures sont au format CET (Europe)
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum
Affilzen SARL : Mention légale