Galera, venho solicitar a ajuda de vocês novamente!! Eu compilo o programa abaixo e nao da erro nenhum, mas quando ele abre o Applet, ocorre o seguinte erro:
Eu reparei o seguinte, quando eu tiro a linha
s = s + “” + n.charAt(n.length() - counter);
o erro não ocorre. Alguém pode me ajudar?? Obrigado!!!
import java.awt.Container;
import java.awt.*;
import javax.swing.*;
public class Exe6_27 extends JApplet {
public void init() {
String sN1, sRes, sMensagem;
JTextArea tela= new JTextArea();
Container c = getContentPane();
c.add(tela);
sN1 = JOptionPane.showInputDialog("Digite uma palavra: ");
sRes = Inverter(sN1);
sMensagem = "O número " + sN1 + "em ordem inversa é: " + sRes;
tela.setText(sMensagem);
}
public String Inverter (String n) {
String s = "";
int i;
for (int counter = 0; counter < n.length(); counter++){
s = s + "" + n.charAt(n.length() - counter);
}
return s;
}
}
Olha só, vamos supor que vc digitou “1234” (n), na primeira vez que passar ai counter vai ser igual a 0 e n.length é igual a 4, logo vai fazer n.charAt(4)
Só que essa string na real é assim:
charAt(0) = ‘1’
charAt(1) = ‘2’
charAt(2) = ‘3’
charAt(3) = ‘4’
Como um array normal, logo não existe posicao 4 nela, quando tentar acessar essa posicao o sistema vai lançar um StringIndexOutOfBoundsException e seu applet vai falhar.
Existe varias formas de arrumar, ai vão 2:
for (int counter = 1; counter <= n.length(); counter++) {
s = s + "" + n.charAt(n.length() - counter);
}
ou
for (int counter = 0; counter < n.length(); counter++) {
s = s + "" + n.charAt(n.length() - counter - 1);
}