Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-01-2021, 15:11   #1
iannez
Junior Member
 
Iscritto dal: Jan 2021
Messaggi: 17
programmazione in java di un automa

Buongiorno a tutti, ho un problema con il seguente codice che deve riconoscere un linguaggio dell'alfabeto{/,*,a}. Ogni stringa inserita va bene ma quando inserisco "/**/" oppure "/*a*/" mi da errore, inserendo una system.out ho notato che in questi casi il carattere '/' lo legge come '\' e se annullo il confronto mi cambia anche gli altri caratteri. Qualcuno può aiutarmi?


Codice:
public class Esercizio{
	
	public static boolean scan(String s){
		
		int state = 0;
		int i = 0;
		
		while(state >= 0 && i < s.length()){
			
			final char ch = s.charAt(i++);
			
			System.out.println("ciclo " +i+ " carattere " +ch+ " stato " +state);
			
			switch(state){
				
				case 0:
				    if(ch == '/')
					    state = 1;
				    else 
					    state = -1;
					break;
					
			    case 1:
				    if(ch == '*')
					    state = 2;
				    else 
					    state = -1;
				    break;
					
			    case 2:
				    if(ch == 'a')
					    state = 2;
					else if(ch == '/')
					    state = 3;
					else if(ch == '*')
					    state = 4;
					else
    				    state = -1;
					break;
				
				case 3:
				    if(ch == '/')
					    state = 3;
					else if(ch == 'a')
					    state = 2;
					else if(ch == '*')
					    state = 4;
					else 
					    state = -1;
					break;
				
				case 4:
				    if(ch == '*')
					    state = 4;
					else if(ch == 'a')
					    state = 2;
					else if(ch == '/')
					    state = 5;
					else 
					    state = -1;
					break;
					
				case 5:
				    if(ch == '*' || ch == '/' || ch == 'a')
					    state = -1;
					break;
			}
		}
		return state == 5;
	}
	
	public static void main (String[] args){
		
		System.out.println(scan(args[0]) ? "OK" : "NOPE");
	}
}
Ho provato ad usare un compilatore online e mi da sempre i risultati giusto mentre da pc mi da sempre errore, qualcuno sa dirmi perché?

Ultima modifica di iannez : 20-01-2021 alle 15:39.
iannez è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2021, 09:16   #2
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
non ho un compilatore java per provare, ma hai provato a sostituire / con // oppure in luogo del simbolo mettere 47 ?????
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2021, 14:09   #3
iannez
Junior Member
 
Iscritto dal: Jan 2021
Messaggi: 17
Si ho provato a confrontare i caratteri con il loro corrispettivo ascii e mi da sempre errore sulle stringhe, ma solo su “/**/“ oppure “/*a*/“
iannez è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2021, 14:28   #4
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Codice:
ase 1:
				    if(ch == '*')
					    state = 2;
				    else 
					    state = -1;
				    break;
					
			    case 2:
				    if(ch == 'a')
					    state = 2;
un dubbio su quell'assegnamento, setti state = 2 in due casi diversi: è corretto?

Ultima modifica di misterx : 21-01-2021 alle 17:19.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2021, 15:25   #5
iannez
Junior Member
 
Iscritto dal: Jan 2021
Messaggi: 17
Si esattamente, perché dopo aver letto i caratteri di apertura se comprare una “a” non va avanti. Almeno io l’ho pensata in questo modo
iannez è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2021, 17:21   #6
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
chiaramente hai provato step by step giusto?
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2021, 17:28   #7
iannez
Junior Member
 
Iscritto dal: Jan 2021
Messaggi: 17
Si e ho anche provato a togliere l’errore forzatamente e fargli stampare la stringa che legge ma risulta completamente diversa da quella inserita
iannez è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2021, 18:10   #8
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
Quando dici che "ti da errore" cosa intendi? Riporta tutte le informazioni che hai, così chi vuole aiutarti non deve investirci troppo tempo per provare a darti una mano.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2021, 19:04   #9
Lampo89
Member
 
L'Avatar di Lampo89
 
Iscritto dal: Dec 2006
Messaggi: 33
Per capire dove sia il problema, forse potrebbe essere utile avere la linea di comando con cui invochi java sul tuo pc - o la configurazione di run dell'IDE che usi
Lampo89 è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2021, 22:12   #10
iannez
Junior Member
 
Iscritto dal: Jan 2021
Messaggi: 17
Codice:
Microsoft Windows [Versione 10.0.19041.746]
(c) 2020 Microsoft Corporation. Tutti i diritti sono riservati.

C:\Users\gioel\OneDrive\Desktop\LFT laboratorio\esercizio 1>javac Es1_9.java

C:\Users\gioel\OneDrive\Desktop\LFT laboratorio\esercizio 1>java Es1_9 "/*aa*/
ciclo 1 carattere / stato 0
ciclo 2 carattere * stato 1
ciclo 3 carattere a stato 2
ciclo 4 carattere a stato 2
ciclo 5 carattere * stato 2
ciclo 6 carattere / stato 4
OK

C:\Users\gioel\OneDrive\Desktop\LFT laboratorio\esercizio 1>java Es1_9 "/*a*/
ciclo 1 carattere \ stato 0
NOPE

C:\Users\gioel\OneDrive\Desktop\LFT laboratorio\esercizio 1>java Es1_9 "/**/
ciclo 1 carattere \ stato 0
NOPE

C:\Users\gioel\OneDrive\Desktop\LFT laboratorio\esercizio 1>
Questo è come io avvio il programma dal prompt dei comandi e anche il risultato che mi restituisce
iannez è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2021, 22:42   #11
Lampo89
Member
 
L'Avatar di Lampo89
 
Iscritto dal: Dec 2006
Messaggi: 33
Quote:
Originariamente inviato da iannez Guarda i messaggi
Codice:
Microsoft Windows [Versione 10.0.19041.746]
(c) 2020 Microsoft Corporation. Tutti i diritti sono riservati.

C:\Users\gioel\OneDrive\Desktop\LFT laboratorio\esercizio 1>javac Es1_9.java

C:\Users\gioel\OneDrive\Desktop\LFT laboratorio\esercizio 1>java Es1_9 "/*aa*/
ciclo 1 carattere / stato 0
ciclo 2 carattere * stato 1
ciclo 3 carattere a stato 2
ciclo 4 carattere a stato 2
ciclo 5 carattere * stato 2
ciclo 6 carattere / stato 4
OK

C:\Users\gioel\OneDrive\Desktop\LFT laboratorio\esercizio 1>java Es1_9 "/*a*/
ciclo 1 carattere \ stato 0
NOPE

C:\Users\gioel\OneDrive\Desktop\LFT laboratorio\esercizio 1>java Es1_9 "/**/
ciclo 1 carattere \ stato 0
NOPE

C:\Users\gioel\OneDrive\Desktop\LFT laboratorio\esercizio 1>
Questo è come io avvio il programma dal prompt dei comandi e anche il risultato che mi restituisce
Forse non c'entra nulla ma ... la virgoletta finale mancante " è un refuso di copia e incolla?
Non saprei aiutarti, mi sembra un problema assurdo ... mai visto problemi simili nel passaggio di parametri da parte della JVM. E tipicamente, quando le cose che vedi sono assurde è perché c'è sempre un problema banale che non si vede

Ultima modifica di Lampo89 : 21-01-2021 alle 22:44.
Lampo89 è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2021, 23:37   #12
iannez
Junior Member
 
Iscritto dal: Jan 2021
Messaggi: 17
Le virgolette non so perché non le ha copiate ma posso assicurare che le ho messe anche perché il primo esempio è corretto, comunque sto uscendo di testa perché proprio non riesco a capire sarà un problema del compilatore o di com’è installato?
iannez è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2021, 00:17   #13
Lampo89
Member
 
L'Avatar di Lampo89
 
Iscritto dal: Dec 2006
Messaggi: 33
Quote:
Originariamente inviato da iannez Guarda i messaggi
Le virgolette non so perché non le ha copiate ma posso assicurare che le ho messe anche perché il primo esempio è corretto, comunque sto uscendo di testa perché proprio non riesco a capire sarà un problema del compilatore o di com’è installato?
Ho trovato un problema molto simile a quello che hai segnalato:

https://bugs.java.com/bugdatabase/vi...bug_id=8154036
https://bugs.java.com/bugdatabase/vi...id=JDK-8131329

Dai un occhio alla versione del JRE: tenterei l'aggiornamento - e per sicurezza anche la JDK aggiornata.

edit: JDK-8131329 : JVM silently expands command line arguments before invoking "main()" è marcato come "not an issue" ci sono dei commenti interessanti a riguardo che dovrebbero chiarire il tuo problema.

Ultima modifica di Lampo89 : 22-01-2021 alle 00:31.
Lampo89 è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2021, 13:42   #14
iannez
Junior Member
 
Iscritto dal: Jan 2021
Messaggi: 17
Va bene grazie mille
iannez è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2021, 15:36   #15
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
Hai provato a stampare args[0] per vedere cosa riceve il programma? Ancora meglio proverei a stampare la lunghezza di args e tutti i valori all'interno perché probabilmente è una questione di passaggio di argomenti che non avviene correttamente.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2021, 22:40   #16
iannez
Junior Member
 
Iscritto dal: Jan 2021
Messaggi: 17
Ci ho provato è appunto nelle stringhe di lunghezza inferiore di /*aa*/ il carattere non viene letto correttamente
iannez è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2021, 23:01   #17
Lampo89
Member
 
L'Avatar di Lampo89
 
Iscritto dal: Dec 2006
Messaggi: 33
Quote:
Originariamente inviato da iannez Guarda i messaggi
Ci ho provato è appunto nelle stringhe di lunghezza inferiore di /*aa*/ il carattere non viene letto correttamente
Potresti incollare qui il contenuto di argv[0] e in generale dell'intero vettore di parametri? Quello che ti è stato dato mi sembra un suggerimento valido, così almeno si capisce come viene espanso il '*'
Lampo89 è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2021, 23:21   #18
Lampo89
Member
 
L'Avatar di Lampo89
 
Iscritto dal: Dec 2006
Messaggi: 33
Usando il tuo stesso tuo codice, aggiungendo la stampa del vettore dei parametri. Due esecuzioni, a parità di bytecode (cioé, ho compilato solo una volta e lanciato nei due ambienti diversi). Provato il tutto con JDK e JRE versione 8, update 261 (se non vado errato)

esecuzione sotto powershell:

Quote:
PS C:\Users\lmp\Desktop\tmp> java Esercizio "/*aa*/"
ciclo 1carattere / stato 0
ciclo 2carattere * stato 1
ciclo 3carattere a stato 2
ciclo 4carattere a stato 2
ciclo 5carattere * stato 2
ciclo 6carattere / stato 4
OK
PS C:\Users\lmp\Desktop\tmp> java Esercizio "/*a*/"
ciclo 1carattere \ stato 0
NOPE
PS C:\Users\lmp\Desktop\tmp> java Esercizio "/*a*/"
[\$WinREAgent, \apache-maven-3.6.3, \Documents and Settings, \DumpStack.log.tmp, \pagefile.sys, \Program Files, \Program Files (x86), \ProgramData, \swapfile.sys, \System Volume Information]
ciclo 1carattere \ stato 0
NOPE
esecuzione sotto cmd:
Quote:
C:\Users\lmp\Desktop\tmp>java Esercizio "/*aa*/"
[/*aa*/]
ciclo 1carattere / stato 0
ciclo 2carattere * stato 1
ciclo 3carattere a stato 2
ciclo 4carattere a stato 2
ciclo 5carattere * stato 2
ciclo 6carattere / stato 4
OK

C:\Users\lmp\Desktop\tmp>java Esercizio "/*a*/"
[/*a*/]
ciclo 1carattere / stato 0
ciclo 2carattere * stato 1
ciclo 3carattere a stato 2
ciclo 4carattere * stato 2
ciclo 5carattere / stato 4
OK
Powershell mi espande in malo modo la wildcard "*". Provando invece:

Quote:
PS C:\Users\lmp\Desktop\tmp> java Esercizio '"/*a*/"'
[/*a*/]
ciclo 1carattere / stato 0
ciclo 2carattere * stato 1
ciclo 3carattere a stato 2
ciclo 4carattere * stato 2
ciclo 5carattere / stato 4
OK
Ora, da quello che hai scritto sembra che tu stia già utilizzando cmd; nel dubbio proverei comunque a stampare i parametri a video come suggerito prima e a provare a lanciare il programma inserendo la stringa "/*a*/" all'interno dei singoli apici: '"/*a*/"'
Prova a dare un occhio anche qua:
https://stackoverflow.com/questions/...-in-powershell

a meno che tu non l'abbia già fatto, eviterei a questo punto l'update di java ...

Ultima modifica di Lampo89 : 22-01-2021 alle 23:37.
Lampo89 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2021, 11:52   #19
iannez
Junior Member
 
Iscritto dal: Jan 2021
Messaggi: 17
Si io compilo usando cmp, L’update di Java l’ho fatto perché pensavo di perde evitare l’errore grazie al consiglio di alcuni miei compagni di corso. Purtroppo anche tra apici continua a darmi lo stesso errore. La cosa strana è che nei compilatori online funziona tutto perfettamente
iannez è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Scoperto un nuovo esopianeta che orbita ...
Blue Origin NS-37: successo per la missi...
Potrebbe essere stata rilevata una super...
La cometa interstellare 3I/ATLAS è...
Xiaomi 17 Ultra: l'autonomia non sarà un...
Il processo produttivo a 2 nm di TSMC è ...
L'atteso aggiornamento dei driver della ...
The Elder Scrolls VI nel 2029 e Fallout ...
Il Ryzen 7 9850X3D appare nel catalogo d...
Weekend pre natalizio Amazon, ecco tutte...
Prezzi giù su Oral-B iO: spazzolini elet...
19.000 Pa a un prezzo senza precedenti: ...
Narwal in super offerta su Amazon: robot...
SK hynix e NVIDIA lavorano a un SSD spec...
Roborock in super offerta su Amazon: pre...
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: 22:48.


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