Deve ser algum erro de parametro

1 resposta
L

Alguem pode me ajudar!!!
estou tentando fazer um programa para inverter valores digitados
quando faço apenas no formulario principal da certo, mas quanto crio uma classe separada do meu form da esse erro ai

Formulario Principal
package view;
import javax.swing.JOptionPane;
import source.Cliente;



 private void btnOkActionPerformed(java.awt.event.ActionEvent evt) {
        String n = txtN.getText();
        int q = txtN.getText().length();
                
        Cliente c = new Cliente(n, q);
        c.resolve();
        c.imprimir();
      
                
    }
Codigo
package source;
import view.FrmCliente;
import javax.swing.JOptionPane;

    public class Cliente {
        private String n = "";  // numeros digitados
        private int q = 0;  // quantidade caracteres armazenados
        private String resu = "";
        
  
    public Cliente(){        
    }
    
    /** Criar instancia dos valores armazenados */
    public Cliente(String n, int q) {
        this.setN(n);
        this.setQ(q);
    }
      
      
    /** Pegar valor dos atributos */
    public String getN() {
        return n;
    }

    public int getQ() {
        return q;
    }

    /** Alterar valor dos atributos */
    public void setN(String n) {
        this.n = n;
    }

    public void setQ(int q){
        this.q =q;
    }
 
    
   public String getResu(){
       return resu;
   } 
   
 
   
   public void setResu(String resu){
       this.resu = resu;
   }
   

     public void resolve(){
          for (int i = 1; i <= this.q; ++i) {
            this.resu = this.n.charAt(i) + this.resu;
                 
          }   
    }    
      
     public void imprimir(){
         JOptionPane.showMessageDialog(null, "Valor é " +this.resu);
     }
 
}
Mensagem de erro
Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: 3
        at java.lang.String.charAt(String.java:558)
        at source.Cliente.resolve(Cliente.java:64)
        at view.FrmCliente.jButton1ActionPerformed(FrmCliente.java:71)
        at view.FrmCliente.access$000(FrmCliente.java:15)
        at view.FrmCliente$1.actionPerformed(FrmCliente.java:55)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
        at java.awt.Component.processMouseEvent(Component.java:5488)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
        at java.awt.Component.processEvent(Component.java:5253)
        at java.awt.Container.processEvent(Container.java:1966)
        at java.awt.Component.dispatchEventImpl(Component.java:3955)
        at java.awt.Container.dispatchEventImpl(Container.java:2024)
        at java.awt.Component.dispatchEvent(Component.java:3803)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
        at java.awt.Container.dispatchEventImpl(Container.java:2010)
        at java.awt.Window.dispatchEventImpl(Window.java:1774)
        at java.awt.Component.dispatchEvent(Component.java:3803)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

BUILD SUCCESSFUL (total time: 5 minutes 1 second)

1 Resposta

J

errado:

correto:

for (int i = 1; i < this.q; ++i) {

Não pode usar um StringBuffer pra inverter? Tem que reinventar a roda?

Criado 20 de junho de 2006
Ultima resposta 20 de jun. de 2006
Respostas 1
Participantes 2