Salve a tutti, in un file jsp ho richiamato così la seguente classe:
codice:
<%@pageimport= "tiw. RicercaNazione"%>
<%
String nn = request.getParameter("nazione".trim());
RicercaNazione rn = new RicercaNazione ("war/WEB-INF/Disoccupazione.csv", "war/WEB-INF/Sigle.txt");
out.print(rn.query(nn));
%>
E ho impostato la classe RicercaNazione nel seguente modo:
codice:
package tiw;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.HashMap;
public class RicercaNazione {
public HashMap <String, Nazione> ln;
public ArrayList <Regione> lr;
public HashMap <String, String> s;
public RicercaNazione (String file1, String file2) {
ln = new HashMap <String, Nazione> ();
lr = new ArrayList <Regione> ();
s = new HashMap <String, String> ();
try {
BufferedReader br = new BufferedReader (new FileReader (file1));
String line;
while ((line = br.readLine()) != null) {
String [] e = line.split(",");
String nazione = e[0].substring(0, e[0].length()-2);
String regione = e[1].trim();
Double valore = Double.parseDouble(e[2].trim());
Regione r = new Regione (nazione, regione, valore);
lr.add(r);
}
br.close();
}
catch (Exception e) {
e.printStackTrace();
}
try {
BufferedReader br1 = new BufferedReader (new FileReader (file2));
String line2;
while ((line2 = br1.readLine()) != null) {
String [] e = line2.split("=");
String codice = e[0].trim().toLowerCase();
String nome = e[1].trim().toLowerCase();
s.put(codice, nome);
}
br1.close();
}
catch (Exception e ) {
e.printStackTrace();
}
for (int i=0; i<lr.size(); i++) {
for (String j: s.keySet()) {
if (lr.get(i).nazione.toLowerCase().trim().equals(j)) {
Nazione n = ln.get(j.trim());
if (n == null) {
Nazione n1 = new Nazione (s.get(j).trim(), j.trim());
ln.put(j.trim(), n1);
n1.add_regione(lr.get(i));
}
if (n != null) {
n.add_regione(lr.get(i));
}
}
}
}
}
public String query (String nn) {
StringBuffer sb = new StringBuffer ();
for (String i : ln.keySet()) {
if (nn.toLowerCase().trim().equalsIgnoreCase(ln.get(i).nome.trim().toLowerCase())) {
double td = (double) 0;
double ts = (double) 0;
for (int j=0; j<ln.get(i).regioni.size(); j++) {
ts += ln.get(i).regioni.get(j).valore;
}
td = (double) ts / ln.get(i).regioni.size();
sb.append("<p class = \"center\">"+"Hai digitato <b>"+nn+"</b>" + "\t"+"il tasso di disoccupazione è:" + td +"</p>");
}
}
return sb.toString();
}
public static void main (String [] args) {
RicercaNazione rn = new RicercaNazione ("war/WEB- INF/Disoccupazione.csv", "war/WEB-INF/Sigle.txt");
System.out.print(rn.query("Ungheria"));
}
}
Ho provato a usare un main per vedere se almeno su console mi stampava correttamente, ed infatti è così! Tuttavia quando eseguo come web non stampa nulla.
Potete aiutarmi ?