1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
| import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
import javax.swing.JOptionPane;
class Recherche
{
public static int vectSize=26;
public static void main(String[] argv)
{
double[]data = new double[26];
try
{
data= LireRequete("req1.txt");
System.out.println( Arrays.toString(data));
JOptionPane.showMessageDialog(null, "L'indice est " + LocaliserIndex(data,"description.txt"));
// System.out.println(LocaliserIndex(data,"testdata.txt"));
}
catch(Exception exp) { }
}
static double[] LireRequete(String filename) throws IOException
{
BufferedReader lecteurAvecBuffer = null;
try
{
lecteurAvecBuffer = new BufferedReader(new FileReader(filename));
}
catch(FileNotFoundException exc)
{
System.out.println("Erreur d'ouverture");
}
double[] vecteur = new double[vectSize];
String ligne=lecteurAvecBuffer.readLine();
char[] tableau = ligne.toCharArray();
String elt="";
int cpt=0;
for(int i=0;i< tableau.length;i++)
{
if (tableau[i] != ' ')
elt=elt+tableau[i];
else
{
vecteur[cpt]=Float.parseFloat(elt);
cpt=cpt+1;
elt="";
}
}
lecteurAvecBuffer.close();
return vecteur;
}
static int LocaliserIndex(double[] data, String filename) throws IOException
{
BufferedReader lecteurAvecBuffer = null;
try
{
lecteurAvecBuffer = new BufferedReader(new FileReader(filename));
}
catch(FileNotFoundException exc)
{
System.out.println("Erreur d'ouverture");
}
double dis=0;
double[] vecteur = new double[vectSize];
double distanceinitiale=100000000;
String ligne=lecteurAvecBuffer.readLine();
int indiceligne=1;
int indice=0;
char[] tableau = ligne.toCharArray();
String elt=";";
int cpt=0;
for(int i=0;i< tableau.length;i++)
{
if (tableau[i] != ' ')
elt=elt+tableau[i];
else
{
vecteur[cpt]=Float.parseFloat(elt);
cpt=cpt+1;
elt="";
}
if (cpt==6)
{
//System.out.println(Arrays.toString(vecteur));
dis=distance(data,vecteur);
if (dis<distanceinitiale)
{
distanceinitiale=dis;
indice=indiceligne;
}
cpt=0;
indiceligne=indiceligne+1;
}
}
lecteurAvecBuffer.close();
return indice;
}
static double distance(double[] tab1, double[] tab2)
{
double dis=0;
for(int j=0;j<tab1.length;j++)
dis=dis+Math.abs(tab1[j]-tab2[j]);
return dis;
}
} |
Partager