2016-10-30 1 views
0

fichier txt contenant les caractéristiques (estrato, taille, âge, chambres, salles de bains, sol et étiquette) de 205 appartements à Medellin, en Colombie et j'ai besoin de charger le fichier et enregistrer chacune des caractéristiques dans leur propre variable spécifique peut les passer à travers une méthode de conversion pour normaliser les données à utiliser plus tard dans une formule de distance pour la classification KNN. J'ai le code actuel:Comment sélectionner les valeurs nécessaires dans un fichier .txt?

import java.util.*; 
import java.io.*; 
/** 
* collection of properties 
* using arraylist 
*/ 
public class Apartments 
{ 
    ArrayList<Property> apartmentList = new ArrayList<>(); 
    String estrato = " "; 
    String size = " "; 
    String age = " "; 
    String beds = " "; 
    String baths = " "; 
    String floor = " "; 
    String label = " "; 

    public void convertFile() throws FileNotFoundException { 
     Scanner input = new Scanner(new  File("ApartmentsFullList.txt")); 
     while(input.hasNextLine()){ 
      String line = input.nextLine(); 
      Scanner lineScan = new Scanner(line); 
      for(int i = 0; i < line.length(); i++){ 
       char start = line.charAt(i); 
       if(start == '{'){ 
        estrato = lineScan.next(); 
        size = lineScan.next(); 
        age = lineScan.next(); 
        beds = lineScan.next(); 
        baths = lineScan.next(); 
        floor = lineScan.next(); 
       } 
      } 
      System.out.println(estrato + " " + size + " " + age + " " +  beds + " " + 
       baths + " " + floor + " " + label); 
     } 
    } 
} 

et le fichier txt suivant:

01-Los Balsos 1380m {6, 430, 4, 3, 4, 22, Luxury}, 
02-El Tesoro 1100m {6, 263, 2, 3, 4, 21, Luxury}, 
03-Las Lomas 1030m {6, 270, 2, 3, 4, 16, Luxury}, 
04-Las Lomas 1020m {6, 270, 2, 3, 6, 18, Luxury}, 
05-Las Lomas 2600m {6, 780, 3, 7, 9, 33, Luxury}, 
06-Los Balsos 1100m {6, 380, 3, 4, 5, 14, Luxury}, 
07-Laureles 1350m {6, 494, 2, 3, 5, 17, Luxury}, 
08-Los Balsos 1100m {6, 445, 3, 4, 5, 10, Luxury}, 
09-Alejandria 1584m {6, 288, 1, 3, 4, 25, Luxury}, 
10-La Florida 1200m {6, 425, 3, 4, 6, 12, Luxury}, 
11-San Lucas 1200m {6, 200, 1, 3, 4, 19, Luxury}, 
12-Los Balsos 1250m {6, 347, 3, 4, 6, 23, Luxury}, 
13-Las Lomas 1300m {6, 350, 2, 6, 6, 9, Luxury}, 
14-El Tesoro 1350m {6, 240, 1, 3, 5, 11, Luxury}, 
15-San Lucas 2800m {6, 760, 1, 5, 8, 31, Luxury}, 
16-El Tesoro 1300m {6, 315, 2, 4, 5, 8, Luxury}, 
17-Las Palmas 1820m {6, 318, 1, 4, 7, 24, Luxury}, 
18-Las Lomas 1500m {6, 429, 1, 3, 5, 13, Luxury}, 
19-El Tesoro 2000m {6, 500, 3, 5, 7, 11, Luxury}, 
20-San Lucas 1800m {6, 603, 3, 5, 5, 17, Luxury}, 
21-El Tesoro 1300m {6, 315, 1, 3, 5, 5, Luxury}, 
22-El Tesoro 1300m {6, 294, 1, 4, 5, 16, Luxury}, 
23-San Lucas 2400m {6, 300, 1, 5, 5, 21, Luxury}, 
24-El Poblado 1180m {6, 382, 2, 3, 4, 12, Luxury}, 
25-Castropol 1190m {6, 302, 1, 3, 4, 26, Luxury}, 
26-El Poblado 2500m {6, 500, 1, 5, 8, 30, Luxury}, 
27-La Calera 1600m {6, 520, 3, 7, 7, 21, Luxury}, 
28-Castropol 1190m {6, 302, 1, 4, 4, 32, Luxury}, 
29-Las Lomas 1530m {6, 338, 2, 3, 5, 24, Luxury}, 
30-Superior 5100m {6, 578, 1, 4, 6, 27, Luxury},  
31-Alejandria 930m {6, 186, 1, 4, 4, 19, Upper}, 
32-Lleras 940m {6, 175, 2, 2, 3, 11, Upper}, 
33-El Poblado 900m {6, 181, 1, 3, 3, 6, Upper}, 
34-San Lucas 800m {6, 175, 2, 3, 4, 7, Upper}, 
35-El Poblado 890m {5, 175, 3, 2, 3, 5, Upper}, 
36-San Lucas 900m {6, 148, 1, 3, 4, 19, Upper}, 
37-El Tesoro 800m {6, 180, 2, 3, 5, 21, Upper}, 
38-Los Balsos 930m {6, 186, 2, 3, 4, 12, Upper}, 
39-Los Balsos 990m {5, 300, 4, 3, 4, 4, Upper}, 
40-El Poblado 960m {6, 153, 1, 2, 3, 12, Upper}, 
41-El Poblado 900m {6, 186, 2, 3, 4, 6, Upper}, 
42-El Poblado 970m {6, 225, 4, 3, 5, 2, Upper}, 
43-San Lucas 920m {5, 168, 1, 3, 4, 4, Upper}, 
44-Laureles 920m {5, 230, 3, 3, 5, 22, Upper}, 
45-Superior 880m {5, 227, 2, 3, 4, 12, Upper}, 
46-El Poblado 980m {5, 298, 4, 4, 5, 11, Upper}, 
47-La Calera 890m {6, 251, 2, 3, 3, 9, Upper}, 
48-Los Balsos 950m {6, 285, 3, 4, 7, 3, Upper}, 
49-San Lucas 860m {6, 162, 1, 3, 4, 13, Upper}, 
50-Envigado 750m {5, 153, 1, 3, 3, 7, Upper}, 
51-M de Oro 830m {6, 209, 2, 3, 5, 18, Upper}, 
52-Superior 850m {6, 220, 2, 4, 4, 15, Upper}, 
53-Inferior 840m {6, 171, 1, 4, 5, 14, Upper}, 
54-Inferior 860m {5, 300, 4, 4, 6, 8, Upper}, 
55-San Lucas 850m {6, 175, 3, 3, 3, 11, Upper}, 
56-El Poblado 680m {6, 290, 3, 4, 3, 17, Upper}, 
57-Tomatera 805m {6, 251, 2, 4, 4, 4, Upper}, 
58-El Poblado 850m {6, 260, 2, 4, 4, 7, Upper}, 
59-Vizcaya 875m {5, 265, 4, 3, 5, 16, Upper}, 
60-Castropol 750m {5, 298, 4, 4, 5, 11, Upper}, 
61-Los Balsos 550m {5, 113, 1, 2, 3, 13, UM}, 
62-El Poblado 599m {6, 130, 1, 3, 2, 3, UM}, 
63-El Poblado 550m {6, 120, 1, 3, 3, 7, UM}, 
64-La Linde 520m {6, 109, 1, 2, 3, 5, UM}, 
65-El Poblado 560m {5, 120, 2, 2, 3, 7, UM}, 
66-El Poblado 530m {6, 172, 4, 3, 4, 8, UM}, 
67-El Poblado 610m {6, 144, 2, 3, 4, 7, UM}, 
68-El Tesoro 555m {6, 152, 2, 3, 4, 11, UM}, 
69-Villa Paula 520m {6, 165, 3, 3, 4, 1, UM}, 
70-La Calera 630m {6, 135, 1, 4, 4, 9, UM}, 
71-Simesa 521m {6, 124, 2, 3, 2, 16, UM}, 
72-El Tesoro 550m {6, 215, 4, 3, 3, 2, UM}, 
73-La Linde 520m {6, 160, 3, 3, 4, 4, UM}, 
74-La Florida 650m {5, 290, 4, 4, 4, 1, UM}, 
75-El Poblado 650m {6, 187, 2, 4, 4, 8, UM}, 
76-San Lucas 520m {6, 277, 4, 3, 4, 1, UM}, 
77-Castropol 550m {6, 117, 1, 3, 4, 5, UM}, 
78-San Lucas 570m {6, 140, 3, 4, 4, 7, UM}, 
79-Astorga 650m {6, 187, 2, 3, 5, 7, UM}, 
80-El Tesoro 545m {6, 136, 2, 2, 3, 6, UM}, 
81-Las Lomas 590m {6, 178, 3, 3, 4, 10, UM}, 
82-San Lucas 650m {6, 128, 1, 2, 3, 1, UM}, 
83-La Florida 650m {6, 230, 4, 4, 4, 8, UM}, 
84-Alejandria 600m {6, 210, 3, 3, 4, 1, UM}, 
85-Las Lomas 550m {5, 139, 1, 3, 3, 9, UM}, 
86-Los Parra 545m {6, 125, 1, 2, 3, 14, UM}, 
87-El Poblado 500m {6, 239, 4, 3, 3, 1, UM}, 
88-Alejandria 595m {6, 113, 1, 2, 3, 4, UM}, 
89-Castellana 600m {5, 200, 4, 3, 3, 2, UM}, 
90-Envigado 540m {5, 125, 1, 2, 3, 7, UM}, 
91 – {5, 109, 3, 4, 3, 8, Middle}, 
92- {5,  97, 3, 3, 3, 9, Middle}, 
93- {4,  93, 4, 3, 2, 6, Middle}, 
94- {6,  126, 3, 2, 3, 6, Middle}, 
95- {6,  124, 4, 3, 2, 1, Middle}, 
96- {5,  127, 3, 3, 3, 3, Middle}, 
97- {5,  115, 4, 2, 1, 2, Middle}, 
98- {5,  110, 4, 4, 2, 1, Middle}, 
99- {4,  72, 3, 3, 2, 5, Middle}, 
100- {5, 71, 1, 2, 1, 10, Middle}, 
101- {4, 72, 1, 2, 2, 19, Middle}, 
102- {4, 69, 3, 3, 2, 12, Middle}, 
103- {4, 90, 1, 3, 3, 24, Middle}, 
104- {3, 68, 4, 3, 2, 10, Middle}, 
105- {5, 76, 3, 1, 3, 13, Middle}, 
106- {6, 142, 4, 3, 4, 1, Middle}, 
107- {6, 71, 4, 3, 2, 2, Middle}, 
108- {3, 116, 4, 3, 5, 1, Middle}, 
109- {6, 55, 1, 2, 2, 3, Middle}, 
110- {6, 150, 4, 3, 3, 8, Middle}, 
112- {4, 80, 3, 2, 3, 4, Middle}, 
113- {3, 62, 3, 3, 2, 2, Middle}, 
114- {6, 154, 4, 3, 3, 9, Middle}, 
115- {4, 70, 3, 3, 2, 5, Middle}, 
116- {6, 119, 4, 3, 4, 3, Middle}, 
117- {3, 55, 3, 3, 2, 2, Middle} 
118- {4, 72, 1, 2, 2, 4, Middle}, 
119- {5, 170, 3, 4, 3, 8, Middle} 
120- {5, 98, 1, 3, 2, 17, Middle}, 
121- {5, 75, 4, 2, 2, 4, Middle}, 
122- {6, 76, 3, 2, 2, 3, Middle}, 
123- {3, 98, 4, 3, 2, 1, Middle}, 
124- {4, 64, 1, 2, 2, 9, Middle}, 
125- {5, 108, 4, 3, 2, 3, Middle}, 
126- {5, 125, 4, 4, 3, 1, Middle}, 
127- {5, 124, 3, 3, 3, 3, Middle}, 
128- {5, 106, 3, 3, 3, 5, Middle}, 
129- {5, 118, 4, 3, 3, 6, Middle}, 
130- {5, 88, 3, 3, 3, 1, Middle}, 
131- {5, 79, 3, 3, 2, 6, Middle}, 
132- {5, 120, 3, 3, 2, 4, Middle}, 
133- {6, 78, 1, 2, 2, 29, Middle}, 
134- {5, 95, 1, 3, 3, 12, Middle}, 
135- {5, 78, 4, 3, 2, 3, Middle}, 
136- {5, 80, 3, 3, 2, 4, Middle}, 
137- {5, 78, 3, 2, 2, 1, Middle}, 
138- {5, 120, 4, 3, 3, 4, Middle}, 
139- {5, 92, 3, 3, 2, 7, Middle}, 
140- {5, 110, 3, 3, 3, 2, Middle}, 
141- {6, 124, 1, 3, 3, 1, Middle}, 
142- {5, 96, 3, 3, 2, 9, Middle}, 
143- {5, 98, 4, 3, 3, 3, Middle}, 
144- {5, 92, 3, 2, 3, 8, Middle}, 
145- {4, 32, 4, 1, 1, 2, LM}, 
146- {3, 45, 3, 2, 1, 1, LM}, 
147- {3, 50, 2, 3, 1, 2, LM}, 
148- {3, 48, 2, 3, 2, 3, LM}, 
149- {2, 48, 1, 3, 2, 1, LM}, 
150- {2, 48, 1, 3, 2, 2, LM}, 
151- {4, 45, 2, 2, 1, 13, LM}, 
152- {4, 45, 3, 3, 1, 11, LM}, 
153- {4, 30, 1, 1, 1, 24, LM}, 
154- {3, 45, 2, 3, 1, 13, LM}, 
155- {3, 60, 2, 3, 1, 4, LM}, 
156- {3, 50, 2, 2, 1, 1, LM}, 
157- {3, 48, 2, 3, 1, 3, LM}, 
158- {3, 30, 1, 1, 1, 2, LM}, 
159- {4, 30, 3, 2, 1, 1, LM}, 
160- {3, 37, 1, 2, 1, 11, LM}, 
161- {3, 54, 2, 3, 2, 10, LM}, 
162- {3, 42, 1, 3, 1, 4, LM}, 
163- {3, 45, 2, 3, 1, 3, LM}, 
164- {3, 54, 3, 3, 2, 10, LM}, 
165- {3, 54, 2, 3, 2, 9, LM}, 
166- {3, 54, 1, 2, 1, 4, LM}, 
167- {3, 80, 4, 3, 2, 2, LM}, 
168- {3, 50, 1, 3, 2, 13, LM}, 
169- {3, 34, 2, 1, 1, 3, LM}, 
170- {3, 55, 1, 3, 1, 1, LM}, 
171- {2, 45, 1, 2, 1, 5, LM}, 
172- {3, 42, 3, 2, 1, 12, LM}, 
173- {3, 39, 1, 1, 1, 3, LM}, 
174- {4, 45, 3, 2, 1, 7, LM}, 
175- {3, 38, 1, 2, 1, 3, LM}, 
176- {2, 42, 1, 2, 1, 4, Lower}, 
177- {1, 43, 1, 3, 1, 4, Lower}, 
178- {2, 25, 1, 1, 1, 1, Lower}, 
179- {2, 42, 1, 2, 1, 1, Lower}, 
180- {1, 49, 1, 2, 1, 1, Lower}, 
181- {1, 46, 2, 3, 1, 2, Lower}, 
182- {2, 18, 1, 1, 1, 4, Lower}, 
183- {2, 45, 3, 3, 1, 2, Lower}, 
184- {3, 18, 1, 1, 1, 3, Lower}, 
185- {1, 40, 2, 2, 1, 2, Lower}, 
186- {2, 40, 2, 2, 1, 4, Lower}, 
187- {2, 41, 2, 3, 1, 2, Lower}, 
188- {3, 50, 3, 2, 1, 1, Lower}, 
189- {1, 44, 4, 2, 1, 1, Lower}, 
190- {1, 55, 3, 3, 1, 2, Lower}, 
191- {2, 17, 1, 1, 1, 1, Lower}, 
192- {1, 40, 3, 2, 1, 1, Lower}, 
193- {1, 41, 4, 2, 1, 4, Lower}, 
194- {1, 40, 2, 2, 1, 3, Lower}, 
195- {3, 16, 1, 1, 1, 2, Lower}, 
196- {3, 45, 1, 2, 1, 1, Lower}, 
197- {3, 48, 1, 3, 1, 2, Lower}, 
198- {2, 43, 1, 3, 1, 4, Lower}, 
199- {1, 50, 4, 2, 1, 1, Lower}, 
200- {1, 60, 4, 2, 1, 1, Lower}, 
201- {1, 40, 1, 2, 1, 2, Lower}, 
202- {3, 32, 1, 1, 1, 1, Lower}, 
203- {2, 44, 1, 2, 1, 3, Lower}, 
204- {1, 40, 4, 2, 1, 1, Lower}, 
205- {2, 36, 2, 2, 1, 5, Lower} 

mais je reçois tout le texte quand j'imprimer et tout ce que je besoin est ce qui est à l'intérieur des accolades

Si quelqu'un peut répondre à ma question et/ou a des conseils sur la mise en œuvre de KNN Java dans mon cas spécifique, il serait d'une grande aide! Merci

Répondre

-1

Supprimer cette ligne

Scanner lineScan = new Scanner(line); 

Déplacer à

if (start == '{') { 
    Scanner lineScan = new Scanner(line.substring(i)); 
    estrato = lineScan.next(); 
    size = lineScan.next(); 
    age = lineScan.next(); 
    beds = lineScan.next(); 
    baths = lineScan.next(); 
    floor = lineScan.next(); 
    break; // consider adding a break here 
} 

Le problème est que vous avez fait le scanner pour la ligne, avant de chercher, même si le caractère est {.

+0

maintenant, quand je tente de convertir ma chaîne en double par analyse, j'obtiens une erreur, car il dit que j'ai des doubles flottants en raison de mes points décimaux. Comment puis-je seulement saisir le chiffre lui-même? –