|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2007
Messaggi: 185
|
[JAVA]Cambiare un valore a caso di una stringa di 0 e 1
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? |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Quote:
Comunque, qual'è esattamente il tuo problema? Il simbolo che devi inserire cos'è? Lo generi random come mai dici che non centra nulla? |
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Oct 2007
Messaggi: 185
|
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: ![]() Uploaded with ImageShack.us |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Oct 2007
Messaggi: 185
|
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) |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Il tuo simbolo strano è dato da questa istruzione
Codice:
Character.forDigit((int) Math.round(Math.random()*10),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. Ultima modifica di MEMon : 22-01-2011 alle 16:00. |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Oct 2007
Messaggi: 185
|
perfetto grazie mille amico!!!!!
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Oct 2007
Messaggi: 185
|
Codice:
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");
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Quote:
9 mettilo nel random, e radix lascialo 10, in questo modo il tuo simbolo varierù da 0 a 9 |
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Oct 2007
Messaggi: 185
|
FINALMENTE
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:48.




















