View Full Version : [JAVA]Cambiare un valore a caso di una stringa di 0 e 1
neosephiroth86
22-01-2011, 13:00
Salve!
Dovrei scrivere del codice java che, presa una stringa composta da 0 e 1 di 8 posizioni, mi cambia un valore a caso della stringa.
Ad esempio:
chromosome= "10110010"
chromosome = "11110010"
io ho scritto del codice ma non va:
char[] char_chromosome=chromosome.toCharArray();
int position=(int)Math.round(Math.random()*10);
if (position<8){char_chromosome[position]=(char) Math.round(Math.random()*10);}
String new_chromosome=new String(char_chromosome);
chromosome=new_chromosome;
System.out.println(chromosome);
In pratica il valore che stampa è del tipo 1o110010 dove o è un simbolo che non c'entra nulla!
Mi potete dare una mano?
Salve!
Dovrei scrivere del codice java che, presa una stringa composta da 0 e 1 di 8 posizioni, mi cambia un valore a caso della stringa.
Ad esempio:
chromosome= "10110010"
chromosome = "11110010"
io ho scritto del codice ma non va:
char[] char_chromosome=chromosome.toCharArray();
int position=(int)Math.round(Math.random()*10);
if (position<8){char_chromosome[position]=(char) Math.round(Math.random()*10);}
String new_chromosome=new String(char_chromosome);
chromosome=new_chromosome;
System.out.println(chromosome);
In pratica il valore che stampa è del tipo 1o110010 dove o è un simbolo che non c'entra nulla!
Mi potete dare una mano?
Perchè fai un random tra 0 e 10 se la string ha lunghezza 8?
Comunque, qual'è esattamente il tuo problema? Il simbolo che devi inserire cos'è? Lo generi random come mai dici che non centra nulla?
neosephiroth86
22-01-2011, 15:47
infatti ho cambiato un pò il codice per generarlo fino ad 8 massimo,ed ho provato ad usare fordigit al posto di cast a char, ora non compare sempre ma qualche volta il simbolo strano:
char[] char_chromosome=chromosome.toCharArray();
char_chromosome[(int)Math.round(Math.random())*7]= Character.forDigit((int) Math.round(Math.random()*10),10);
String new_chromosome=new String(char_chromosome);
chromosome=new_chromosome;
System.out.println(chromosome+" tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt");
adesso vi faccio uno screenshot:
http://img573.imageshack.us/img573/7849/erroreo.jpg (http://img573.imageshack.us/i/erroreo.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
neosephiroth86
22-01-2011, 15:52
cosi adesso ho anche il problema che dentro char_chromosome[(int)Math.round(Math.random())*7]
esce sempre 0 o 7,mentre dovrebbe essere un numero casuale da 0 a 7 (gli elementi del vettore)
Il tuo simbolo strano è dato da questa istruzione
Character.forDigit((int) Math.round(Math.random()*10),10)
Per digit ci passi un numero da 0 a 10 e come radix 10, il problema nasce quando digit è 10.
Metti 9 come limite.
Per l'altro problema è che fai il round di Math.random(), quindi sarà sempre o 0 oppure 1. Devi fare invece il round di tutta l'operazione.
neosephiroth86
22-01-2011, 16:06
perfetto grazie mille amico!!!!!
neosephiroth86
22-01-2011, 16:12
char[] char_chromosome=chromosome.toCharArray();
char_chromosome[(int)Math.round(Math.random()*7)]= Character.forDigit((int) Math.round(Math.random()*10),9);
String new_chromosome=new String(char_chromosome);
chromosome=new_chromosome;
System.out.println(chromosome+" ppppppppppppppppp");
l'errore del posizionamento nella stringa è stato risolto(va da 0 a 7) ma l'errore del "simbolo" ancora c'è,anche dopo aver messo 9 invece di 10
char[] char_chromosome=chromosome.toCharArray();
char_chromosome[(int)Math.round(Math.random()*7)]= Character.forDigit((int) Math.round(Math.random()*10),9);
String new_chromosome=new String(char_chromosome);
chromosome=new_chromosome;
System.out.println(chromosome+" ppppppppppppppppp");
l'errore del posizionamento nella stringa è stato risolto(va da 0 a 7) ma l'errore del "simbolo" ancora c'è,anche dopo aver messo 9 invece di 10
Hai messo 9 nel 10 sbagliato :D
9 mettilo nel random, e radix lascialo 10, in questo modo il tuo simbolo varierù da 0 a 9
neosephiroth86
22-01-2011, 16:20
FINALMENTE :D :D :D :D :D :D :D :D :D :D :D :D :D :D :sofico: :sofico: :sofico:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.