defman dummy mioche

Inscrit le: 27 Mar 2004 Messages: 1
|
Posté le: Sam Mar 27, 2004 12:52 am Sujet du message: correcteur de frappe:je bloque aidez moi!!! |
|
|
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! |
|