Salve, credo che per questo problema ci voglia una persona con più conoscenza in campo. Allora, se vi scrivo è perchè ho trovato una stranezza usando Eclipse per compilare ed eseguire un codice che fa parte di una traccia d'esame, infatti fra poco avrò l'esame all'università e vorrei togliermi gli ultimi dubbi su quanto riguarda i fondamenti di Java.
Il programma è questo:
public class PariDisp{
public static void main(String [] args){
double [] [] mat = new double[][]{{1.0,2.0,2.1,1.1},
{1.0,1.5,1.5,1.0},
{1.1,3.3,3.2,1.0},
{1.1,2.0,2.0,1.1}};
if(metodo2(mat))
System.out.println("OK");
else
System.out.println("NON OK");
}
public static double metodo1(double[] v, int i){
double s=0;
for(int k=i;k<v.length;k+=2)
s+=v[k];
return s;
}
public static boolean metodo2(double [] [] m){
boolean verificato=true;
for(int k=0;k<m.length && verificato;k++)
if(metodo1(m[k],0)!=metodo1(m[k],1))
verificato=false;
return verificato;
}
}
In pratica il programma restituisce "OK" se la somma degli elementi in posizione pari è uguale alla somma degli elementi in posizione dispari di ogni riga della matrice "m[][]"...il risultato è stato stranamente "NON OK" perchè mi dice che nella terza riga le somme degli elementi dispari e pari non sono uguali.
Allora per capire il problema ho fatto una prova di collaudo, cioè ho riscritto il codice con il "System.out.print" nella zona interessata per vedere qual'era l'errore:
public class PariDisp {
public static void main(String [] args){
double[][]mat=new double[][]{{1.0,2.0,2.1,1.1},
{1.0,1.5,1.5,1.0},
{1.1,3.3,3.2,1.0},
{1.1,2.0,2.0,1.1}};
if(metodo2(mat))
System.out.println("OK");
else
System.out.println("NON OK");
}
public static double metodo1(double[] v,int i){
double s=0;
for(int k=i;k<v.length;k+=2){
s+=v[k];
System.out.println(v[k]);
}
System.out.println("La somma è uguale a "+s);
return s;
}
public static boolean metodo2(double [][]m){
boolean verificato=true;
for(int k=0;k<m.length && verificato;k++)
if(metodo1(m[k],0)!=metodo1(m[k],1))
verificato=false;
return verificato;
}
}
Ed ecco il risultato in Eclipse:
1.0
2.1
La somma è uguale a 3.1
2.0
1.1
La somma è uguale a 3.1
1.0
1.5
La somma è uguale a 2.5
1.5
1.0
La somma è uguale a 2.5
1.1
3.2
La somma è uguale a 4.300000000000001
3.3
1.0
La somma è uguale a 4.3
NON OK
Come viene fuori quel "4.300000000000001" ??