|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
|
[java] Wrapper per convertire un booleano in un numero
Salve ragazzi devo fare un programmino di intelligenza artificiale che prende in input un file formato arff per poi lavorarci sopra.
Per chi non lo sapesse tale file è una sorta di tab excel con un header e al suo interno sotto il nome di ogni attributo ha il valore di istanza TRUE o FALSE... il problema è che questo troiaio lo prendo in input ed è quindi difficile gestirlo... pensavo quindi di trasformare questi attributi booleani in numerici per poi trattare il file come fosse una matrice... Qualcuno mi sa aiutare? Grazie mille in anticipo!!!
__________________
Ho concluso felicemente molte trattative su questo forum! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
|
Ragazzi chiedo aiuto per la gestione di questo file...
io mi trovo di fronte ad un file con intestazione, che devo saltare, dopo di che devo analizzare il contenuto. Questo consta di una seri di colonne le quali hanno vari attributi che possono essere numerici come stringhe come booleani. Io devo prendere tutti questi attributi e trasformali in numerici e splittare sulle virgole. In sostanza quello che voglio è che il file mi si trasformi in una matrice numerica da gestire poi in modo normale... qualcuno mi sa dare una mano??? Grazie
__________________
Ho concluso felicemente molte trattative su questo forum! |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
|
Idea di massima:
Codice:
import java.io.*;
class FileRead {
public static void main(String args[]) {
try {
FileInputStream fstream = new FileInputStream("asd.txt");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
int lineNumber = 0;
int array[] = new int[100];
while ((strLine = br.readLine()) != null) {
if (lineNumber++ == 0)
continue;
String[] stringArray = strLine.split(",");
for (int i = 0; i < stringArray.length; ++i){
array[i] = Integer.parseInt(stringArray[i]);
System.out.println(i + ":" + array[i]);
}
}
in.close();
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
}
}
Devi modificarlo in modo che gestisca la memorizzazione nella tua matrice finale.
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
|
Quote:
Innanzi tutto grazie mille...siccome sono veramente niubbo in java e mi è stato dato un progetto per me difficile ti chiedo ancora aiuto... ti posto il file: Codice:
@relation zoo
@attribute animal {aardvark,antelope,bass,bear,boar,buffalo,calf,carp,catfish,cavy,cheetah,chicken,chub,clam,crab,crayfish,crow,deer,dogfish,dolphin,dove,duck,elephant,flamingo,flea,frog,fruitbat,giraffe,girl,gnat,goat,gorilla,gull,haddock,hamster,hare,hawk,herring,honeybee,housefly,kiwi,ladybird,lark,leopard,lion,lobster,lynx,mink,mole,mongoose,moth,newt,octopus,opossum,oryx,ostrich,parakeet,penguin,pheasant,pike,piranha,pitviper,platypus,polecat,pony,porpoise,puma,pussycat,raccoon,reindeer,rhea,scorpion,seahorse,seal,sealion,seasnake,seawasp,skimmer,skua,slowworm,slug,sole,sparrow,squirrel,starfish,stingray,swan,termite,toad,tortoise,tuatara,tuna,vampire,vole,vulture,wallaby,wasp,wolf,worm,wren}
@attribute hair {false,true}
@attribute feathers {false,true}
@attribute eggs {false,true}
@attribute milk {false,true}
@attribute airborne {false,true}
@attribute aquatic {false,true}
@attribute predator {false,true}
@attribute toothed {false,true}
@attribute backbone {false,true}
@attribute breathes {false,true}
@attribute venomous {false,true}
@attribute fins {false,true}
@attribute legs numeric
@attribute tail {false,true}
@attribute domestic {false,true}
@attribute catsize {false,true}
@attribute type {mammal,bird,reptile,fish,amphibian,insect,invertebrate}
@data
aardvark,true,false,false,true,false,false,true,true,true,true,false,false,4,false,false,true,mammal
antelope,true,false,false,true,false,false,false,true,true,true,false,false,4,true,false,true,mammal
bass,false,false,true,false,false,true,true,true,true,false,false,true,0,true,false,false,fish
bear,true,false,false,true,false,false,true,true,true,true,false,false,4,false,false,true,mammal
boar,true,false,false,true,false,false,true,true,true,true,false,false,4,true,false,true,mammal
buffalo,true,false,false,true,false,false,false,true,true,true,false,false,4,true,false,true,mammal
calf,true,false,false,true,false,false,false,true,true,true,false,false,4,true,true,true,mammal
carp,false,false,true,false,false,true,false,true,true,false,false,true,0,true,true,false,fish
catfish,false,false,true,false,false,true,true,true,true,false,false,true,0,true,false,false,fish
cavy,true,false,false,true,false,false,false,true,true,true,false,false,4,false,true,false,mammal
cheetah,true,false,false,true,false,false,true,true,true,true,false,false,4,true,false,true,mammal
chicken,false,true,true,false,true,false,false,false,true,true,false,false,2,true,true,false,bird
chub,false,false,true,false,false,true,true,true,true,false,false,true,0,true,false,false,fish
clam,false,false,true,false,false,false,true,false,false,false,false,false,0,false,false,false,invertebrate
crab,false,false,true,false,false,true,true,false,false,false,false,false,4,false,false,false,invertebrate
crayfish,false,false,true,false,false,true,true,false,false,false,false,false,6,false,false,false,invertebrate
crow,false,true,true,false,true,false,true,false,true,true,false,false,2,true,false,false,bird
deer,true,false,false,true,false,false,false,true,true,true,false,false,4,true,false,true,mammal
dogfish,false,false,true,false,false,true,true,true,true,false,false,true,0,true,false,true,fish
dolphin,false,false,false,true,false,true,true,true,true,true,false,true,0,true,false,true,mammal
dove,false,true,true,false,true,false,false,false,true,true,false,false,2,true,true,false,bird
duck,false,true,true,false,true,true,false,false,true,true,false,false,2,true,false,false,bird
elephant,true,false,false,true,false,false,false,true,true,true,false,false,4,true,false,true,mammal
flamingo,false,true,true,false,true,false,false,false,true,true,false,false,2,true,false,true,bird
flea,false,false,true,false,false,false,false,false,false,true,false,false,6,false,false,false,insect
frog,false,false,true,false,false,true,true,true,true,true,false,false,4,false,false,false,amphibian
frog,false,false,true,false,false,true,true,true,true,true,true,false,4,false,false,false,amphibian
fruitbat,true,false,false,true,true,false,false,true,true,true,false,false,2,true,false,false,mammal
giraffe,true,false,false,true,false,false,false,true,true,true,false,false,4,true,false,true,mammal
girl,true,false,false,true,false,false,true,true,true,true,false,false,2,false,true,true,mammal
gnat,false,false,true,false,true,false,false,false,false,true,false,false,6,false,false,false,insect
goat,true,false,false,true,false,false,false,true,true,true,false,false,4,true,true,true,mammal
gorilla,true,false,false,true,false,false,false,true,true,true,false,false,2,false,false,true,mammal
i miei file txt si trovano in src e il troiaio di codice mio era questo: Codice:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class reader {
public reader() throws IOException{
FileReader fileReader = new FileReader("src/zoo.txt");
BufferedReader fileBufereReader = new BufferedReader(fileReader );
ArrayList<String> blah = new ArrayList<String>();
String s = fileBufereReader .readLine();
while(s!=null){
blah.add(s);
s = fileBufereReader .readLine();
String[] array= s.split(",");
for (int i=0; i<array.length; i++){
System.out.println("\n" + array[i]);
}
}
__________________
Ho concluso felicemente molte trattative su questo forum! |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
|
ah...ho continuato la programmazione a bestia :
Codice:
while(s!=null){
blah.add(s);
s = fileBufereReader .readLine();
String[] array= s.split(",");
for (int i=0; i<array.length; i++){
if (array[i].equals("true")){
array[i]="1";
}
else if (array[i].equals("false")){
array[i]="0";
}
System.out.println("\n" + array[i]);
}
}
__________________
Ho concluso felicemente molte trattative su questo forum! |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
|
Più tardi butto un'occhio, al volo però ti consiglio di usare sempre le funzioni già messe a disposizione dalla libreria per le conversioni.
Es, per passare da String a boolean... http://docs.oracle.com/javase/1.5.0/...lang.String%29
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
|
ok grazie mille cmq a me nella fattispecie non mi serve passare da stringa a booleano quanto a numerico!
Sai se avessi solo file con true e false basterebbe un if come ho messo ma ho anche altri valori numerici che devono restare tali poi devo gestire i nomi, devono essere trasformati in numeri pure loro, o anche altri caratteri ascii
__________________
Ho concluso felicemente molte trattative su questo forum! |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
|
Quote:
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2789
|
Se ho capito bene il problema, potresti creare una tabella dei simboli.
Se vuoi che true e false valgano 1 e 0 li inserisci preventivamente nella tabella, quindi: "false" -> 0 "true" -> 1 dopodiché leggi tutti i tuoi token (quindi numeri o parole e non so cos'altro) e se sono già presenti nella tabella, la interroghi e li traduci in numero, altrimenti gli assegni un numero progressivo e li inserisci in tabella. Esempio, ho i seguenti token e la tabella di sopra: animal,aardvark,true,animal - animal non è in tabella, lo inserisco con numero 2 e lo traduco in 2 - aardvark non è in tabella, lo inserisco con numero 3 e lo traduco in 3 - true è in tabella, lo traduco in 1 - animal è in tabella, lo traduco in 2 - risultato: 2,3,1,2 Questo a grandi linee... forse i numeri dovranno restare tali, quindi dovrai stare attento a che non ci siano 2 simboli (una parola ed un numero) con assegnato lo stesso valore |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Stai usando questo metodo? Forse potrebbe esserti utile
http://docs.oracle.com/javase/6/docs...va.lang.String) |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
|
Quote:
però non saprei come partire... sai che classi e metodi usare? come si aggiungono i valori alla tabella? grazie mille
__________________
Ho concluso felicemente molte trattative su questo forum! |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2789
|
Per la tabella userei una HashMap<String, Integer>, oppure un'altra implementazione di Map.
http://docs.oracle.com/javase/1.5.0/.../util/Map.html http://docs.oracle.com/javase/1.5.0/...l/HashMap.html Per il resto non so a quali problemi potresti andare incontro, inizia a scrivere qualcosa e vediamo... |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
|
Quote:
__________________
Ho concluso felicemente molte trattative su questo forum! |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:16.




















