Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654

    Invocare metodi con argomento

    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

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Invocare metodi con argomento

    Originariamente inviato da Horus-Ra
    codice:
    for(int i=0; i<fraseScambio.length(); i++)
    Devi usare < non <=. L'indice va da 0 fino a length-1.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Invocare metodi con argomento

    L'utilizzo del metodo keyPressed() è sbagliato. Devi implementare quel metodo!!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Allora due cose:

    Se implementi una interfaccia (e lo stai facendo) devi implementarne i metodi.. non solo scrivere "implements qualcosa"

    Per quanto riguarda l'outOfBound, dipende dal fatto che il primo carattere di una stringa ha posizione "0" e l'ultimo length - 1. Tu arrivi a length nel ciclo for (in altre parole, fai il confronto solo con minore e non minore-uguale come stai facendo adesso)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Invocare metodi con argomento

    EDIT: chiedo scusa x i diversi post ... ho fatto casino a cliccare...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.