ciao a tutti! ho un problema e spero che qualcuno possa aiutarmi!!
ho una tabella di un database strutturata come segue:

user id(int) articolo(int) prezzo(double) quantita(int) reparto(int)

dove le colonne acquisto e reparto sono identificate da interi piuttosto che da stringhe. Dovrei costruire una matrice diagonale (o più semplicemente triangolare) come segue:

articolo1 articolo 2 articolo3
articolo1
articolo2
articolo3

e riempire ogni cella della matrice facendo il confronto tra i due articoli in questione secondo la regola del coseno.....ovvero, la coppia art1-art2 secondo la regola del coseno, quella art1-art3 secondo la regola del coseno ecc.ecc. Il ragionamento fatto consiste nel salvare in un array (mediante una query) gli id degli articoli venduti e mediante la sua lunghezza costruire la matrice triangolare.Non sono esperto di java, qualcuno può darmi una mano? il codice che finora ho usato è il seguente:


codice:
package evolution;  
import java.util.List; 
 public class Matrice { 		
              int[][]matrice;
              int i,j; 
//creo una matrice triangolare inferiore in cui  inserire i valori
             matrice = new int [job.length][];
//job è un array di interi che identificano gli id degli articoli acquistati...vedi sotto  		
            for(i=0; i<matrice.length;i++)
                  { 	matrice[i] =new int[i+1];	} 	
/*confronto le stringhe due per volta*/ 	
         	for(i=0;i<job.length;i++)
          for(j=i+1;<job.length;j++) {     
//asesso vorrei inserire nella matrice triangolare 0 sulla diagonale e per ogni riga i rispettivi //valori 					         
      	for(i=0; i<matrice[i].length;i++)
          { for(j=0;<matrice[i].length;j++){ 	
		if(i==j){   matrice[i][j]=0; 					    	            System.out.println(matrice[i][j]+""); 					                }else 			
           matrice[i][j]=coseno; 
//inserisco nelle celle diverse dalla diagonale il confronto effettuato tramite la regola del //coseno..vedi sotto 	
              System.out.println(matrice[i][j]+""); 		                        } 					         } 				        } 			         } 					return matrice; 	} }


codice:
import java.sql.*;
import java.util.Vector;

public class prova
{
	private String driver = "com.mysql.jdbc.Driver";
	private Connection connessione;
	public Statement state;
	private ResultSet result;
	
	public Connection connessione(){
		try{
			Class.forName(driver);
		   }catch(ClassNotFoundException e){
			   			System.out.println("Driver non caricato in memoria!!");
			   			System.exit(1);
		   }
		   try{
		    connessione = DriverManager.getConnection("jdbc:mysql://localhost/schedule"+"?user=root&password=pass");
		   }catch(SQLException e){System.out.println("Errore accesso"); System.exit(2);}
		   return connessione;
	}
	
	public static void main(String args[])
	{
		
		Object job[] = new Object [];
		
		StringBuffer qry = new StringBuffer();
		qry.append("SELECT distinct articolo FROM tabella order by articolo");
		String query = new String(qry.toString());
	    Statement stmt = null;
	    ResultSet rs = null;
	    ResultSetMetaData md =null;
	    int columns = new Integer(0);
	    Vector row=new Vector(columns);
	    Vector data = new Vector();
	    Connection c = null;
	    try
	    {  
	    	prova cal = new prova();
	    	c=cal.connessione();
	    	stmt = c.createStatement();
	    	rs = stmt.executeQuery(query);
	    	md = rs.getMetaData();
	    	columns = md.getColumnCount();
	  
			while(rs.next())
			{
				for (j = 0; j <= columns; j++)
				{
					System.out.println("sono nel for: ["+i+"] ["+j+"]"); // stampa di prova
					tabella[i][j] = rs.getObject(j+1); 
					
				}
				i++;
			}
			
			for(i=0; i<=3; i++)
			{
				for(j=0; j<=5; j++)
				{
					System.out.println("prova->"+tabella[i][j]); //stampa di prova array pieno
				}
			}
			
	    }
	    catch(SQLException e)
	    {
	    	System.out.println("errore table "+e);
	    }	
	}
}
codice:
//regola del coseno

private double matchingUser1VsUser2(int[] vet1,int[] vet2) {
        double modVet1=0,modVet2=0;
        double result=0;
        for(int index=0;index<vet1.length;index++){
            if( vet1[index]!=0 && vet2[index]!=0 )
                modVet1 += (double) (Math.pow(vet1[index], 2));
        }
        modVet1 = (double) Math.sqrt(modVet1);
        for(int index=0;index<vet2.length;index++){
            if( vet1[index]!=0 && vet2[index]!=0 )
                modVet2 += (double) (Math.pow(vet2[index], 2));
        }
        modVet2 = (double) Math.sqrt(modVet2);
        for(int index=0;index<vet2.length;index++){
            result += vet1[index]*vet2[index];
        }
        result = result / ( modVet1*modVet2 );
        if( Double.isNaN(result)==true )
            result=0;
        return result;        
    }