Questo è il mio primo programma in Java, esso consiste nel traformare una stringa scritta in morse nella cifra corrispondente.
Il punto sarà rappresentato dal carattere "." e la linea dal carattere "_".
La sintassi è corretta ma c'è un errore di logica.
Il mio programma per capire che cifra è controlla il primo carattere della stringa con la funzione charAt(0) e se è il punto assegna alla variabile type il carattere "p" e se è linea, "l".
In qualunque caso conta quanti punti ci sono nella stringa se il primo è un punto e quante linee se la prima è una linea con questa funzione:
codice:
for (i=0; i<=4; i++){
if (morse.charAt(i)=='x'){ //x puo essere il punto (.) o la linea (_)
freq = freq++;
}
}
La stringa che gli ho dato io per verificare se il programma funziona è "...._" che sarebbe il numero 4.
Quindi dovrebbe uscire 4 visto che alla fine c'è la funzione:
codice:
switch (type){
case 'l': {
freq=freq+5;
System.out.println(freq);
break;
}
case 'p': {
System.out.println(freq);
break;
}
Ma mi da' un errore su switch (type){ dicendo che la variabile dovrebbe essere inizializzata, ma così ho fatto!
Riporto dunque il codice di tutto il programma:
codice:
import java.util.*;
public class MorseTraductor{
public static void main(){
String morse;
char type;
int freq=0, i;
morse = new String ("...._");
switch (morse.charAt(0)){
case '_': {
type='l';
for (i=0; i<=4; i++){
if (morse.charAt(i)=='_'){
freq = freq++;
}
}
break;
}
case '.': {
type='p';
for (i=0; i<=4; i++){
if (morse.charAt(i)=='.'){
freq = freq++;
}
}
break;
}
}
switch (type){
case 'l': {
freq=freq+5;
System.out.println(freq);
break;
}
case 'p': {
System.out.println(freq);
break;
}
}
}
}
Spero che qualcuno sia in grado di aiutarmi e di essermi spiegato bene.