Ir ao conteúdo

Torre de Hanoi em java


i.tec

Posts recomendados

Postado

ola pessoal gostaria de pedir que alguem me ajudasse com um problema que estou tendo. Eu tenho que criar um programa com interface grafica usando netbeans que resolva e mostre passo a passo a torre de hanoi depois de receber a quantidade de discos. Mas to com problema na hora de imprimir o passo a passo, pois o comando que eu conheço so imprime uma linha, ou seja, so imprime um unico passo, se alguem puder dizer o que posso mudar pra ele funcionar agradeço, aqui vai o codigo do programa:

obs: a parte sublinhada é o comando que estou usando pra imprimir



import javax.swing.JOptionPane;

/**

*/
public class Hanoi extends javax.swing.JFrame {


/**
* Creates new form Hanoi
*/
public Hanoi() {
initComponents();
}

/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jLabel1 = new javax.swing.JLabel();
txtDiscos = new javax.swing.JTextField();
btnIniciar = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
txtResultado = new javax.swing.JTextArea();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenuItem2 = new javax.swing.JMenuItem();
btnMenuSobre = new javax.swing.JMenu();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jLabel1.setText("Especifique a quantidade de discos:");

btnIniciar.setText("Iniciar");
btnIniciar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnIniciarActionPerformed(evt);
}
});

txtResultado.setColumns(20);
txtResultado.setRows(5);
jScrollPane1.setViewportView(txtResultado);

jMenu1.setText("Arquivo");

jMenuItem2.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0));
jMenuItem2.setText("Sair");
jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem2ActionPerformed(evt);
}
});
jMenu1.add(jMenuItem2);

jMenuBar1.add(jMenu1);

btnMenuSobre.setText("Sobre");
btnMenuSobre.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
btnMenuSobreMouseClicked(evt);
}
});
jMenuBar1.add(btnMenuSobre);

setJMenuBar(jMenuBar1);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addGap(18, 18, 18)
.addComponent(txtDiscos, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btnIniciar))
.addComponent(jScrollPane1))
.addContainerGap(18, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtDiscos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnIniciar))
.addGap(18, 18, 18)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 201, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(48, Short.MAX_VALUE))
);

pack();
}// </editor-fold>

private void btnMenuSobreMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
JOptionPane.showMessageDialog(this, "TecHanoi\n Versão: 0.1\nDesenvolvido por: Icaro Carlos, Diego Paz,\n Heron e Dionnaton Caio.",
"Sobre", JOptionPane.INFORMATION_MESSAGE);
}

private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}

private void btnIniciarActionPerformed(java.awt.event.ActionEvent evt) {
double numero;
numero = Integer.parseInt(txtDiscos.getText());
moverTorre(numero, '1', '3', '2');
}

private void moveUmDisco(double n, char inicio, char fim) {

[U] txtResultado.setText(String.valueOf("Mova o disco " + n + "da torre " + inicio +" para o torre " + fim +"\n"));
[/U]
}
private void moverTorre(double n, char inicio, char fim, char temp) {
if (n == 1){
moveUmDisco(n,inicio, fim);
} else {
moverTorre(n - 1, inicio, temp, fim);
moveUmDisco(n,inicio, fim);
moverTorre(n - 1, temp, fim, inicio);
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see [url]http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html[/url]
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Hanoi.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Hanoi.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Hanoi.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Hanoi.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>

/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Hanoi().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JButton btnIniciar;
private javax.swing.JMenu btnMenuSobre;
private javax.swing.JLabel jLabel1;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextField txtDiscos;
private javax.swing.JTextArea txtResultado;
// End of variables declaration


}
package torrehanoi;

Postado

Você está usando um setText, todo o campo irá ser alterado para apenas aquela linha, não lembro direito o nome da função, se eu não me engano era append ou algo do tipo, para poder adicionar texto ao campo invés de setar.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!