ciao, ho sviluppato uno scriptino per l'esame di java e il risultato è stato questo
insufficiente (tutti i metodi sollevano eccezioni; test non superato)
ma non capisco cosa significhi, l'ho testato parecchio e non ho mai visto eccezioni...
qualcuno sarebbe così gentile da dargli un occhiata? lo script è molto semplice
ho la possibilità di correggerlo e di rimandarlo ma non capendo il problema non so cosa correggere
queste sono le specifiche del progetto
http://homes.dico.unimi.it/prog/turn...04/Weditor.pdf
e questo è il mio lavoro, ci sono molti commenti ma lo script è corto
Codice PHP:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FileNotFoundException;
import java.io.IOException;
/**
* La classe Weditor è una piccola applicazione di
* word processing. Il costruttore riceve come unico
* parametro il nome del file da cui prendere il testo.
* Il testo viene salvato nella variabile $_str_.
* A questo punto è possibile utilizzare i metodi per
* fare ricerche o rimpiazzare porzioni di testo.
*
* Esempio :
* Weditor we = new Weditor("c:/test.txt");
* int pos = we.findNext("parola");
* System.out.println(pos);
*
* @version 0.1, 06/10/04
*/
class Weditor {
/** Contiene il testo prelevato dal file */
String $_str_ = "";
/** Indica l'indice di partenza per le ricerche */
int $_curPos_ = 0;
/**
* Crea un nuova oggetto Weditor prelevando il testo
* da un file, il testo viene copiato nella variabile
* $_str_. Il parametro nomefile indica il file da cui
* prelevare il testo, se il file non esiste viene lanciata
* la FileNotFoundException exception.
*
* @param nomefile stringa che indica il file da cui prelevare
* il testo
* @throws FileNotFoundException se il file nomefile non esiste
*/
public Weditor(String nomefile) throws FileNotFoundException
{
File f = new File(nomefile);
int ch;
if(f.exists())
{
try {
File inputFile = new File(nomefile);
FileReader in = new FileReader(inputFile);
while ((ch = in.read()) > -1)
$_str_ += (char)ch;
in.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
} else {
throw new FileNotFoundException("File non trovato.");
}
}
/**
* Ritorna il testo associato al Weditor corrente come unica stringa.
*
* @return il testo associato all'oggetto Weditor
*/
public String toString()
{
return $_str_;
}
/**
* Cerca la successiva occorrenza di una data parola
* all'interno del testo associato all' oggetto Weditor.
*
* @return la posizione della parola o -1 se la parola
* non viene trovata
*
* @see Weditor#regexFind(String)
*/
public int findNext(String word)
{
int[] wBounds = regexFind("\\b"+word+"\\b");
if(wBounds[0] >= 0){
$_curPos_ = wBounds[1];
return wBounds[0];
} else
return -1;
}
/**
* Cerca all'interno del testo associato all' oggetto Weditor
* la successiva parola che inizia con prefix e ne restituisce
* la posizione
*
* @return la posizione della parola trovata o -1 se
* non è stata trovata alcuna parola
*
* @see Weditor#regexFind(String)
*/
public int findStartWith(String prefix)
{
int[] wBounds = regexFind("\\b"+prefix+"[\\w]*");
if(wBounds[0] >= 0){
$_curPos_ = wBounds[1];
return wBounds[0];
} else
return -1;
}
/**
* Cerca all'interno del testo associato all' oggetto Weditor
* la successiva parola che finisce con postfix e ne restituisce
* la posizione.
*
* @return la posizione della parola trovata o -1 se
* non è stata trovata alcuna parola
*
* @see Weditor#regexFind(String)
*/
public int findEndWith(String postfix)
{
int[] wBounds = regexFind("[\\w]*"+postfix+"\\b");
if(wBounds[0] >= 0){
$_curPos_ = wBounds[1];
return wBounds[0];
} else
return -1;
}
/**
* Cerca all'interno del testo associato all' oggetto Weditor
* la successiva parola che contiene infix e ne restituisce
* la posizione.
*
* @return la posizione della parola trovata o -1 se
* non è stata trovata alcuna parola
*
* @see Weditor#regexFind(String)
*/
public int findContain(String infix)
{
int[] wBounds = regexFind("[\\w]+"+infix+"[\\w]+");
if(wBounds[0] >= 0){
$_curPos_ = wBounds[1];
return wBounds[0];
} else
return -1;
}
/**
* Setta il valore 0 come indice di partenza per le successive
* ricerche.
*/
public void findReset()
{
$_curPos_ = 0;
}
/**
* Partendo dall'inizio del testo associato all'oggetto Weditor
* sostituisce la prima occorrenza di oldS con newS e restituisce
* l'oggetto Weditor
*
* @return l'oggetto Weditor aggiornato
*
* @see java.lang.String#replaceFirst(String, String)
*/
public Weditor replaceTop(String oldS, String newS, int n)
{
int repl = 0;
while(repl < n) {
$_str_ = $_str_.replaceFirst("\\b"+oldS+"\\b", newS);
repl++;
}
return this;
}
/**
* Partendo dalla fine del testo associato all'oggetto Weditor
* sostituisce la prima occorrenza di oldS con newS e restituisce
* l'oggetto Weditor
*
* @return l'oggetto Weditor aggiornato
*
* @see java.lang.String#replaceFirst(String, String)
* @see Weditor#reverse(String)
*/
public Weditor replaceBottom(String oldS, String newS, int n)
{
String oldSR= reverse(oldS);
String newSR = reverse(newS);
String $_str_R = reverse($_str_);
int repl = 0;
while(repl < n) {
$_str_R = $_str_R.replaceFirst("\\b"+oldSR+"\\b", newSR);
repl++;
}
$_str_ = reverse($_str_R);
return this;
}
/**
* Sostituisce tutte le occorrenze della parola oldS con la parola
* newS e restituisce l'oggetto Weditor.
*
* @return l'oggetto Weditor aggiornato
*
* @see java.lang.String#replaceAll(String, String)
*/
public Weditor replaceAll(String oldS, String newS)
{
$_str_ = $_str_.replaceAll("\\b"+oldS+"\\b", newS);
return this;
}
/**
* Salva il contenuto della variabile $_str_ nel file di testo
* nomefile
*
* @see java.io.File#File(String);
* @see java.io.FileWriter#FileWriter(File);
* @see java.io.FileWriter#write(String);
* @see java.io.FileWriter#close();
*/
public void saveAs(String nomefile)
{
try {
File outputFile = new File(nomefile);
FileWriter out = new FileWriter(outputFile);
out.write($_str_);
out.close();
} catch (IOException e) {
e.getMessage();
}
}
/**
* Riceve come parametro un'espressione regolare.
* Cerca all'interno del testo associato al Weditor
* la prima parola che rispetta le condizioni specificate da un espressione
* regolare.
*
* @return la posizione del primo e dell'ultimo carattere della parola.
* Se il metodo java.util.regex.Matcher.find lancia l'eccezione
* IllegalStateException, ovvero nel caso in cui nessuna parola
* rispetti l'espressione regolare viene assegnato il valore -1
* entrambi gli elementi.
*
* @see java.io.File#File(String);
* @see java.io.FileWriter#FileWriter(File);
* @see java.io.FileWriter#write(String);
* @see java.io.FileWriter#close();
*/
private int[] regexFind(String regex)
{
int[] wBounds = new int[2];
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher($_str_);
try {
m.find($_curPos_);
wBounds[0] = m.start();
wBounds[1] = m.end();
} catch (IllegalStateException e) {
wBounds[0] = wBounds[1] = -1;
}
return wBounds;
}
/**
* Riceve come parametro una stringa e la inverte usando il metodo
* java.lang.StringBuffer.reverse().
*
* @return la stringa str invertita
*
* @see java.lang.StringBuffer#reverse()
*/
private String reverse(String str)
{
return new StringBuffer(str).reverse().toString();
}
}
e questo è lo script che ho usato per testarlo
codice:
import java.util.*;
import java.io.*;
public class testWeditor {
/** Creates a new instance of testWeditor */
public static void main(String args[]) {
try {
Weditor we = new Weditor("c:/java_test/prova.tt");
int pos = we.findNext("Milano");
System.out.println(pos);
} catch (FileNotFoundException e) {
System.out.println("file non trovato");
}
}
}
sono disperato , help !!
grazie