Mostrar os passos para resolver o problema das Torres de Hanoi

Olá, estou com o seguinte código, porém a classe para teste não está funcionando:

public class AlgesdUm{
      public static void Hanoi (int n, char a, char b, char c) {
         if (n>0) {
         Hanoi (n-1, a, c, b);
         System.out.println("Passar disco" + n +"da haste" + a + "para a haste" + c);
         Hanoi (n-1, b, a, c);
         }
      }   
}

public class TesteA {
   public static void main (String args []) {
      //System.out.println(AlgesdUm.Hanoi(3, 'a', 'c', 'b'));
   }
}

Dá o seguinte erro: TesteA.java:4: error: ‘void’ type not allowed here
Detalhe: Estou utilizando JGrasp

Alguém pode me ajudar??

Vc quer printar um método que não retorna nada.

//Não tem retorno
public void

//Retorna uma String
public String

E assim sucessivamente…


E vc já colocou um System.out.println dentro do método:

Pode chama-lo assim:

public static void main(String args[]) {
    Hanoi(3, 'a', 'c', 'b');
}
1 curtida

MUUUUUUUUITO obrigada, de verdade! ainda não entendi ao certo pq o hanoi não pode ser sot. Mas deu certo, grata!

1 curtida

é pq um método vazio não tem retorno.

Não tem como vc printar isso:

private VOID teste(){
   System.out.println("Meu nome é Vidii");
}

System.out.println(teste()); //vai dar erro

O que você pode fazer com esse método acima é apenas chama-lo:

 teste(); //não vai dar erro

Agora se vc quer imprimir um valor chamando esse método, vc precisa adicionar um retorno à ele, exemplo:

private String teste(){
    return "Meu nome é Vidii";
}

Aí sim vc pode imprimir:

System.out.println(teste());

Deu pra entender melhor?