Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-03-2011, 07:40   #1
neosephiroth86
Member
 
Iscritto dal: Oct 2007
Messaggi: 185
[JAVA]Cambiare un valore a caso di una stringa.

Salve! Devo cambiare un valore a caso di una stringa, composta da cifre dallo 0 al 9, di un valore inferiore o maggiore del valore preesistente, tale valore sarà maggiore o minore a caso.
La dimensione del char array che rappresenta la stringa è 7 ( 8 caselle)

Ad esempio: 72839487 in input
se scelgo il terzo digit 8 posso avere o 7 o 9 (con il 50% di probabilità)
72739487 o 72939487

Nel caso il valore sia 0 o 9 (valori limite), si sostituisce tale valore con 1 nel caso dello 0 e con 8 nel caso del 9.

Ad esempio: 72039487 diventa per forza 72139487

Il codice vecchio che ho cambia il valore a caso più radicalmente, portandolo da 0 a 9.

Questo è il codice:

char_chromosome[(int) Math.round(Math.random() * 7)] = Character
.forDigit((int) Math.round(Math.random() * 9), 10);



Mi potete aiutare?
Grazie
neosephiroth86 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 07:47   #2
Gin&&Tonic
Member
 
L'Avatar di Gin&&Tonic
 
Iscritto dal: Aug 2010
Messaggi: 138
scusa dimmi se ho capito bene :

Tu hai una stringa contenente un numero (intero ) e vuoi incrementare o decrementare questo num?


Nella stringa oltre al numero c'è altro?
Gin&&Tonic è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 07:52   #3
neosephiroth86
Member
 
Iscritto dal: Oct 2007
Messaggi: 185
esatto, incrementarlo o diminuirlo di uno ma a CASO.
No nella stringa non c'è altro, solo che la stringa la trasformo in un char array e poi la ritrasformo in stringa per comodità...
neosephiroth86 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 08:05   #4
Gin&&Tonic
Member
 
L'Avatar di Gin&&Tonic
 
Iscritto dal: Aug 2010
Messaggi: 138
ma per "a caso cosa intendi"? tu hai parlato i evento limite (0 e 9) quindi devi controllare il valore del numero che vuoi modificare , giusto?


il tuo problema è solo quello di generare casualmente 1 o -1 ?

int GeneraN(){
int x=(int)(Math.random()*2 - Math.random()*2);
if (x==0) return GeneraN;
else return x; }
Gin&&Tonic è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 08:12   #5
neosephiroth86
Member
 
Iscritto dal: Oct 2007
Messaggi: 185
esatto, devo controllare il valore del numero che devo modificare, perchè se è 0 diventerà per forza 1 e se è 9 per forza 8
neosephiroth86 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 08:20   #6
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Quote:
Originariamente inviato da neosephiroth86 Guarda i messaggi
esatto, devo controllare il valore del numero che devo modificare, perchè se è 0 diventerà per forza 1 e se è 9 per forza 8
dai mica è difficile

Codice:
if array[index] == '0'
    cambia
else if array[index] == '9'
    cambia
else
    cambia
edit
ma per caso devi gestire anche un eventuale overflow?
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 08:21   #7
Gin&&Tonic
Member
 
L'Avatar di Gin&&Tonic
 
Iscritto dal: Aug 2010
Messaggi: 138
QUOTO CLOCKOVER
Gin&&Tonic è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 13:05   #8
neosephiroth86
Member
 
Iscritto dal: Oct 2007
Messaggi: 185
ok ci siamo ma per mettere un valore casuale tra -1 e +1?
neosephiroth86 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 13:42   #9
Gin&&Tonic
Member
 
L'Avatar di Gin&&Tonic
 
Iscritto dal: Aug 2010
Messaggi: 138
Nel main:
Codice:
boolean controllo=true;
while(controllo)
 int x=(int)(Math.random()*2 - Math.random()*2);
if (x!=0) controllo =false; 
 }

int numeroCasuale=x;
se vuoi un metodo va bee quello che ti ho consigliato prima

Ultima modifica di Gin&&Tonic : 25-03-2011 alle 13:46.
Gin&&Tonic è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 13:44   #10
neosephiroth86
Member
 
Iscritto dal: Oct 2007
Messaggi: 185
ok grazie perfetto!
neosephiroth86 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 13:47   #11
Gin&&Tonic
Member
 
L'Avatar di Gin&&Tonic
 
Iscritto dal: Aug 2010
Messaggi: 138
Quote:
Originariamente inviato da neosephiroth86 Guarda i messaggi
ok grazie perfetto!
Nulla
Gin&&Tonic è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 13:54   #12
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12847
Quote:
Originariamente inviato da Gin&&Tonic Guarda i messaggi
ma per "a caso cosa intendi"? tu hai parlato i evento limite (0 e 9) quindi devi controllare il valore del numero che vuoi modificare , giusto?


il tuo problema è solo quello di generare casualmente 1 o -1 ?

int GeneraN(){
int x=(int)(Math.random()*2 - Math.random()*2);
if (x==0) return GeneraN;
else return x; }
Forse è meglio fare una cosa del genere:
Codice:
int Genera()
{
    double val = Math.random();
    return val < 0.5 ? -1 : 1;
}
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 17:12   #13
neosephiroth86
Member
 
Iscritto dal: Oct 2007
Messaggi: 185
Codice:
public class test {
	
	public static void main(String args[]){
	
		String chromosome="03827593";
	char[] char_chromosome = chromosome.toCharArray();
	System.out.println(chromosome+"      vecchio   ---------");
	
	int pos=(int) Math.round(Math.random() * 7); 
	int x=(int)(Math.random()*2 - Math.random()*2);
	if (char_chromosome[pos]==0) char_chromosome[pos]=1;
	if (char_chromosome[pos]==9) char_chromosome[pos]=8;
	else{
	char_chromosome[pos]=(char) (char_chromosome[pos]+x);
	}
	String new_chromosome = new String(char_chromosome);
	chromosome = new_chromosome;
	System.out.println(chromosome+"      nuovo     -------------");
	
	
	}
}
Mi da come output


03827593 vecchio ---------
03827593 nuovo -------------

Lo stesso! Dove sbaglio?
neosephiroth86 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 17:37   #14
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Fai molta ma molta confusione
creati un nuovo oggetto Random
Codice:
Random rn = new Random();
adesso passiamo alla posizione casuale
Codice:
//posizione casuale dell'array
int pos = rn.nexInt(array.lenght);
qui fai i cambiamenti

Codice:
con questo verifichi i valori
if(array[index] == '0')
    cambi il valore
else if array[index] == '9')
    cambi il valore
else 
    //qui utilizzi il metodo suggerito da WarDuck
    array[index] += generaN();
e hai fatto

edit
utilizzo Random perchè mi ci trovo meglio... niente di particolare però

Ultima modifica di clockover : 25-03-2011 alle 17:39.
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 18:19   #15
neosephiroth86
Member
 
Iscritto dal: Oct 2007
Messaggi: 185
un errore sta nel codice di gin e tonic
int x=(int)(Math.random()*2 - Math.random()*2)

dà a volte -1, 0 e +1, non solo -1 e +1
Infatti il codice mio va bene quando compare +1 e -1, ridà lo stesso valore di input quando x è 0 (come m'è capitato quando mi sono lamentato).
neosephiroth86 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 18:28   #16
neosephiroth86
Member
 
Iscritto dal: Oct 2007
Messaggi: 185
do{x=(int)(Math.random()*2 - Math.random()*2);}
while(x==0);

Adesso da SOLO -1 e +1
neosephiroth86 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 19:02   #17
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Ma scusa...fare qualcosa tipo:
Codice:
public String modifica(String s) {
    int i = (int)(Math.random() * s.length());
    char[] c = s.toCharArray();
    if(c[i] == '0') c[i] = '1';
    else if(c[i] == '9') c[i] = '8';
    else c[i] += Math.random() > 0.5 ? 1 : -1;
    return new String(c);
}
?
cya
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 19:26   #18
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12847
Mi chiedo perché non leggiate i reply, post 12:

Quote:
Originariamente inviato da WarDuck Guarda i messaggi
Forse è meglio fare una cosa del genere:
Codice:
int Genera()
{
    double val = Math.random();
    return val < 0.5 ? -1 : 1;
}
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 19:35   #19
neosephiroth86
Member
 
Iscritto dal: Oct 2007
Messaggi: 185
lo sò solo
Codice:
val < 0.5 ? -1 : 1;
per me è arabo...
Sono stato istruito alla java 1.4, mai vista una cosa del genere "?" e" :"...
neosephiroth86 è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2011, 00:50   #20
asrm
Member
 
Iscritto dal: Jul 2004
Messaggi: 182
Quote:
Originariamente inviato da neosephiroth86 Guarda i messaggi
lo sò solo
Codice:
val < 0.5 ? -1 : 1;
per me è arabo...
Sono stato istruito alla java 1.4, mai vista una cosa del genere "?" e" :"...
return val < 0.5 ? 1 : -1;

sarebbe equivalente a:

if (val < 0.5) return 1;
else return -1;

Ultima modifica di asrm : 26-03-2011 alle 00:52.
asrm è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Alcuni Galaxy S26 utilizzeranno il chip ...
Amazon, ecco i super sconti del weekend:...
Scovare un bug di sicurezza sui disposit...
Offerta Amazon su NordVPN: proteggi 10 d...
ECOVACS DEEBOT X8 PRO OMNI in offerta su...
Scope elettriche Tineco in offerta su Am...
Offerta Amazon sui robot EUREKA J15 Ultr...
Chrome disattiverà automaticament...
Tornano tutti e 4 i colori disponibili p...
Super sconto su iPhone 16: Amazon abbass...
Sconto pazzesco sulle Blink: videocamere...
Ring ancora in forte sconto, 35,99€ (-64...
Oltre 740.000 giocatori simultanei per B...
Tensione tra Stati Uniti e Cina: Trump a...
La popolazione protesta, Microsoft si ar...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:00.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v