Ho una tabella, di n colonne. Esclusa la prima riga e la prima colonna devo calcolare, per ogni riga, i 2 parametri che sono più frequenti.
Questo serve per un sito, che sto facendo con servlet.
Per risolvere il problema ho creato un class
Codice PHP:
public class Health {
private int aa,cc,gg,tt,ct;
private String a_a,c_c,g_g,t_t,c_t;
int i,j;
int max,max2;
Vector <Integer> contatori = new Vector<Integer>(5);
public Health(){
this.aa=0;
this.cc=0;
this.gg=0;
this.tt=0;
this.ct=0;
contatori.insertElementAt(0, aa);
contatori.insertElementAt(1, cc);
contatori.insertElementAt(2, gg);
contatori.insertElementAt(3, tt);
contatori.insertElementAt(4, ct);
}
public void setaa(){
aa++;
}
public void setcc(){
cc++;
}
public void setgg(){
gg++;
}
public void settt(){
tt++;
}
public void setct(){
ct++;
}
public int getaa() {
return aa;
}
public int getcc() {
return cc;
}
public int getgg() {
return gg;
}
public int gettt() {
return tt;
}
public int getct() {
return ct;
}
public void aa(int de){
aa-=de;
}
public void cc(int de){
cc-=de;
}
public void gg(int de){
gg-=de;
}
public void tt(int de){
tt-=de;
}
public void ct(int de){
ct-=de;
}
public void Conta(String cella){
a_a="A/A";
c_c="C/C";
g_g="G/G";
t_t="T/T";
c_t="C/T";
if (cella.equals(a_a)){
setaa();
}
if (cella.equals(c_c)){
setcc();
}
if (cella.equals(g_g)){
setgg();
}
if (cella.equals(t_t)){
settt();
}
if (cella.equals(c_t)){
setct();
}
}
public void Aggiorna(){
contatori.insertElementAt(getaa(), 0);
contatori.insertElementAt(getcc(), 1);
contatori.insertElementAt(getgg(), 2);
contatori.insertElementAt(gettt(), 3);
contatori.insertElementAt(getct(), 4);
System.out.println(getaa()+","+getcc()+","+getgg()+","+gettt()+","+getct());
}
public String Elemento(){
max=contatori.elementAt(0);
for (j=0; j<contatori.size();j++){
if (max>contatori.elementAt(j))
max=max;
else
max=contatori.elementAt(j);
}
if (max==contatori.elementAt(0)){
aa(10);
return "A/A";
}
if (max==contatori.elementAt(1)){
cc(10);
return "C/C";
}
if (max==contatori.elementAt(2)){
gg(10);
return "G/G";
}
if (max==contatori.elementAt(3)){
tt(10);
return "T/T";
}
else
ct(10);
return "C/T";
}
public void Pulisci (){
contatori.removeAllElements();
}
nella servlet ho
Codice PHP:
rowCount = s.getRows();
columnCount = s.getColumns();
int colonne = columnCount/2;
// Contenuto Tabella
for (int i = 1; i < rowCount; i++) {
rowData = s.getRow(i);
if (rowData.length > 1) {
//out.println("<tr>");
for (int j=0; j < colonne+1; j++) {
if (rowData[j] != null)
//out.println("<td>");
H.Conta(rowData[j].getContents());
//(rowData[j].getContents());
//out.println("</td>");
}
}
H.Aggiorna();
out.println("
valore maggiore 1: "+H.Elemento()+"
");
H.Aggiorna();
out.println(" valore maggiore 2: "+H.Elemento());
H.Pulisci();
//out.println("</tr>");
}
il problema è il seguente, anche se nel Vector i contatori funzionano, il metodo Elemnto sembra non funzionare. In quanto mi restituisce stringhe "false". Ovvero, se nella prima riga si ripete 3 volte C/T e 2 volte T/T, il risultato della servlet è
codice:
valore maggiore 1: C/T
valore maggiore 2: C/T
dove sbaglio?
edit, tabella proveniente da file .xls