Erro estranho, alguem me da uma ajuda

E ae galera,

Eu de novo :grin:

To com o seguinte prob:

Ao executar esses códigos eles rodam normalmente, mas na hora de mostrar o resultado, mostra algo estranho 8O

O resultado q eu quero naum aparece, ao invés disso, aparece isso:
Exercicio@hexa

Onde hexa eh um código em haxadecimal.

Segue o código do programa:

import java.text.DecimalFormat;


public class Exercicio {

	private float somaReal;
	private float somaImaginarios;
	private int controle = 0; 							// Controle p/ garantir q somas != 0
	
	public Exercicio ( float a, float b, float c, float d, int escolha )
	{
		switch ( escolha ) {
		
		case 1 : soma( a, b, c, d ); break;
		case 2 : diferenca( a, b, c, d ); break;
		case 3 : 
			if ( controle != 0 )
				  mostre( somaReal, somaImaginarios ); 
			else
				  erro();
		}
	}	

	public void soma ( float a, float b, float c, float d )
	{
		somaReal = a + c;
		somaImaginarios = b + d;
		controle++;
		mostre ( somaReal, somaImaginarios );
	}
	
	public void diferenca ( float a, float b, float c, float d )
	{
		somaReal = a - c;
		somaImaginarios = b - d;
		controle++;
		mostre ( somaReal, somaImaginarios );
	}
	
	public String mostre ( float x, float y )
	{
		DecimalFormat threeDigits = new DecimalFormat ( "0.000" );
		
		return threeDigits.format ( x ) + threeDigits.format ( y ) + "i";
	}

	public String erro()
	{
		String error = "Vc deve efetuar uma operação antes de solicitar o " +
				"resultado";
		return error;
	}
	
	
}
import javax.swing.*;


public class imaginarios {

		
	public static void main ( String args[] )
	{
				
		String cReal1 = 
			JOptionPane.showInputDialog ( null, "Digite o valor inteiro do 1º nº" );
		
		float real1 = Float.parseFloat ( cReal1 );
		
		String cImag1 = 
			JOptionPane.showInputDialog ( null, "Digite o valor imaginário do 1º nº" );
		
		float imag1 = Float.parseFloat ( cImag1 );
		
		String cReal2 =
			JOptionPane.showInputDialog ( null, "Digite o valor inteiro do 2º nº" );
		
		float real2 = Float.parseFloat ( cReal2 );
		
		String cImag2 =
			JOptionPane.showInputDialog ( null, "Digite o valor imaginário do 2º nº" );
		
		float imag2 = Float.parseFloat ( cImag2 );
		
		String choose = 
			JOptionPane.showInputDialog ( null, "Digite 1 para soma\nDois para subtração" + 
					"\n 3 para mostrar o resultado" );
		
		int esc = Integer.parseInt ( choose );
		
		Exercicio ex = new Exercicio ( real1, imag1, real2, imag2, esc );
		
		JOptionPane.showMessageDialog ( null, ex );
	}
}

Alguém entendeu o pq do erro?

valeu

[code]Exercicio ex = new Exercicio ( real1, imag1, real2, imag2, esc );

  JOptionPane.showMessageDialog ( null, ex ); [/code]

Quando você manda imprimir um objeto, o Java chama o método toString() do objeto, que você não redefiniu.

O que deveria ser impresso?

Você tem que criar um método que retorne uma String com o texto que você quer que apareça.

eae blz?

bom não é bem erro isso que aconteceu e sim
um detalhe que passou desapercebido soh

tah vendo onde vc faz a saida do resultado?

vc está apenas indicando o objeto ex, entaum isso vai apenas
imprimir o endereço do objeto na memoria e não o resultado
vc precisa de algum método que te retorne o resultado da sua classe exercicio :wink:

ps.: eu vi um método mostre na sua classe Exercicio mas vc não a chama
para exibir os resultados, ou faça outro método na sua classe um para retornar cada um dos resultados das somas :razz:

[]á

Valeu pela ajuda ae galera, funcionou!

:grin: