Voglio creare un semplice programma che codifichi il normale linguaggio alfabetico in altre lettere corrispondenti. Ho creato un metodo esterno per lo scambio (in blu). Ho due problemi:
1) Il programma di base funziona (cioè converte), ma dopo aver convertito esce con questi messaggi di errore:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 16
at java.lang.String.charAt(Unknown Source)
at Morse.ScambioFraseACodice(Morse.java:39)
at Morse.main(Morse.java:26)
L'errore a riga 26 è dovuto a "inizio.ScambioFraseACodice(fraseMaiusc)".
L'errore a riga 39 è invece "switch(fraseScambio.charAt(i))".
2) Il secondo errore è di sintassi credo. Nello switch del metodo ho messo un case di default per dirgli di uscire alla pressione di un tasto (in caso di errore). Mi hanno detto in un altro topic che il metodo è keyPressed() contenuto in ActionListener. Il debug però mi dà errore nel punto in cui implemento la classe... sbaglio degli import, per caso? Ho provato a importare anche java.awt.event, ma niente da fare.
Questo è il codice:
import java.awt.*;
public class Codifica implements ActionListener
{
public static void main(String[] args) {
String frase, fraseMaiusc;
System.out.println("Inserire il testo da tradurre in codice morse:");
frase = Input.readLine();
fraseMaiusc = frase.toUpperCase();
Codifica inizio = new Codifica();
inizio.ScambioFraseACodice(fraseMaiusc);
}
public void ScambioFraseACodice(String fraseScambio){
for(int i=0; i<=fraseScambio.length(); i++){
switch(fraseScambio.charAt(i))
[...]
keyPressed();
}
Grazie