Ciaoa tutti vi allego due file uno contenente il testo del problema e l'altro contenente la soluzione del problema voi guardatelo per favore e poi cercate di rispondere a queste domande per darmi dei piccoli chiarimenti.
1)Da dove saltano fuori le variabili fname count e riga dichiarate nel metodo writeScreen
e le variabili precRiga corrRiga e prissRiga del metodo writeRecords? Non sono mai state diachiarate prima e non sono state assegnate ne prima ne dopo a niente;
2)Nella classe trova.java cioè l'eseguibile a cosa serve precisamente quel metoso usage()?
E POI l'array args che passano come argomento all'oggetto indi a quale array corrisponde nella classe Individua? nemmeno lui è stato assegnato precedentemente
Oh mamma mia per favore ragazzi spiegatemi queste cose non riesco proprio a capire.
Ciao e Grazie anticipatamente
Il problema consiste nel creare un'applicazione che cerca una stringa fornita in input all'interno di alcuni file anch'essi forniti in input.
Il numero dei nomi di file non è noto a priori
lunghezza file non nota apriori
Ogni volta che il progr individua una occorrenza della string deve
-visualizzare la riga del file che la contiene nella finestra di output video con ò'indicazione del nome file e la riga di esso in cui si trova la stringa
-scrivere la riga sul file testo risultati.txt che non esste prima dell'es. del progr insime con la riga precedente e la successiva.
2 classi individua e trova(che contiene il main)
Problema:
// non fate caso a qualche errore lo sto ricopiano tanto per ma il problema è scritto bene senza errori in un foglio
import java.util.Scanner;
import.java.io.*
public class Individua
private String stringa; //stringa da cercare
private String[] nomiFile; // nomi file da analizzare
private int numFile; // numero di file da analizzare
private Scanner in;
private FileReader r;
public Individua(String[] st)
{
sringa=st[0];
numFile=st.length -1;
nomiFile=st; nomiFile[0] nontiene la stringa da cerc, i nomi file vanno da nomiFile[1] in poi
}
public void esegui() throws IOException
{
int countRighe; //contatore righe file
int pos; // posizione di inizio della stringa nela riga file
String currentRiga;
String previousRiga;
String nextRiga;
FileWriter outFile = new FileWriter("Risultati.txt");
PrintWriter buf = new PrintWriter(outFile);
for(int i=1; <= numFile; i++)
{
openFle(nomiFile[i]);
countRighe=0;
pos= -1;
previousRiga="";
currentRiga="";
nextRiga=in.nextLine();
while (in.hasNext())
{
countRighe++;
previousRiga=currentRiga;
currentRiga=nextRiga;
nextRiga=in.nextLine();
pos=currentRiga.indexof(stringa);
if(pos>=0)
{
writeScreen(nomiFile[i], countRighe, currentRiga);
writeRecords(buf, previousRiga, currentRiga, nextRiga);
}
if(countRighe==0)
{
pos=nextRiga.indexof(stringa);
if(pos>=0)
{
writeScreen(nomiFile[i], 1, nextRiga);
writeRecords(buf,"",nextRiga,"");
}
}closeFile(r);
}
outFile.close();
}
public void openFile(String fname) throws IOException
{
r=new FileReader (fname);
in= new Scanner (r);
}
public void closeFile(FileReader r) throws IOException
{
r.close();
}
public void writeScreen(String fname, int count, String riga)
{
System.out.printf("%s : %d : %s\n", fname, count,riga)
}
public void writeRecords (PrintWriter out, String precRiga, String corrRiga, String prossRiga) throws IOEXceprtion
{
out.printf("Riga precedente: %s\n" precRiga);
//lo stesso per riga corrente e successiva
}
}
Classe Trova.java
import java.io.*;
public class Trova[
public static void main( String[] args);
{
if(args.length<2) usage();
Individua indi = new Individua(args);
indi.esegui();
}
public static void usage()
{System.out.println("Us del programma: java Trva stringa nome1 nome2 ....");
System.exit(1);
}}
}



