Estou bem no início sobre Java, esto tentando entender sobre recursividade. Se alguém puder me ajudar.
Primeira parte do programa:
// Programa de conversão de números de acordo com a base desejada
// Para alterar a fonte do texto
import java.awt.Font;
import javax.swing.*;
import javax.swing.plaf.FontUIResource;
// Exibe janelas
import javax.swing.JOptionPane;
public class Conversao
{
public static void main(String[] args)
{
// Aumentar o tamanho e o tipo de fonte dos textos
UIManager.put("OptionPane.messageFont", new FontUIResource(new Font("Arial", Font.BOLD, 24)));
// Opções de conversão
Object[] opcao = {"Decimal para binário", "Binário para decimal"};
String tipo = (String)JOptionPane.showInputDialog(null, "Escolha um tipo de conversão", "Calculadora de conversão de números", 3, null, opcao, opcao);
String numero1 = JOptionPane.showInputDialog(null, "Digite um número", "Calculadora de conversão de números", 3);
int numero = Integer.parseInt(numero1);
if (tipo.equals("Decimal para binário"))
{
ConversaoDB converter = new ConversaoDB();
converter.Conversao(numero);
String mensagem1 = String.format("Número em decimal: %d%nNúmero em binário: %d", numero, ConversaoDB.Conversao(numero));
JOptionPane.showMessageDialog(null, mensagem1, "Calculadora de conversão de números", 3);
}
/*if (tipo.equals("Binário para decimal"))
{
ConversaoBD converter = new ConversaoBD(numero);
System.out.printf("%d", converter.getConversao());
}*/
}
}
Segunda parte do programa:
public class ConversaoDB
{
// Variáveis de intância
//private int numeroVI;
public static int Conversao(int numeroVL)
{
if (numeroVL > 0)
{
Conversao(numeroVL / 2);
//System.out.print(numeroVL % 2);
return (numeroVL % 2);
}
}
}
esse método aí tem que retornar um inteiro, faltou um valor padrão aí pra ele. Tipo assim:
public static int Conversao(int numeroVL) {
if (numeroVL > 0) {
Conversao(numeroVL / 2);
//System.out.print(numeroVL % 2);
return (numeroVL % 2);
}
return 0;
}
ou dá uma condição else e retorna outra coisa, nao sei, aí vai da sua regra
Eu fiz a modificação no programa, o porém é que eu não estou encontrando uma maneira de retornar o número em binário na forma de janela. Se for para retornar no CMD do Windows eu consigo, mas não é o que eu quero.
Agora o programa apresenta outro erro. O que estou tentando fazer é uma recursividade na classe ConversaoDB.
Programa parte 1:
// Programa de conversão de números de acordo com a base desejada
// Para alterar a fonte do texto
import java.awt.Font;
import javax.swing.*;
import javax.swing.plaf.FontUIResource;
// Exibe janelas
import javax.swing.JOptionPane;
public class Conversao
{
public static void main(String[] args)
{
// Aumentar o tamanho e o tipo de fonte dos textos
UIManager.put("OptionPane.messageFont", new FontUIResource(new Font("Arial", Font.BOLD, 24)));
// Opções de conversão
Object[] opcao = {"Decimal para binário", "Binário para decimal"};
String tipo = (String)JOptionPane.showInputDialog(null, "Escolha um tipo de conversão", "Calculadora de conversão de números", 3, null, opcao, opcao[0]);
String numero1 = JOptionPane.showInputDialog(null, "Digite um número", "Calculadora de conversão de números", 3);
int numero = Integer.parseInt(numero1);
if (tipo.equals("Decimal para binário"))
{
ConversaoDB converter = new ConversaoDB(numero);
//converter.setConversao(numero);
String mensagem1 = String.format("Número em decimal: %d%nNúmero em binário: OLHAR NO CMD", numero);
JOptionPane.showMessageDialog(null, mensagem1, "Calculadora de conversão de números", 3);
}
/*if (tipo.equals("Binário para decimal"))
{
ConversaoBD converter = new ConversaoBD(numero);
System.out.printf("%.0f", converter.getConversao());
}*/
}
}
Parte 2:
public class ConversaoDB
{
public ConversaoDB(int numeroVL)
{
if (numeroVL > 0)
{
ConversaoDB(numeroVL / 2);
System.out.print(numeroVL % 2);
}
}
}
Recursão só é permitida em métodos.
Você está tentando fazer no construtor.
Muito obrigado @staroski e @rodriguesabner pela ajuda