[resolvido] erro ao usar JOptionPane

Caros amigos…

implemente a sequencia de Fibonacci de forma que aparece apenas a possição solicitada. Mas, na hora foi mudar de


System.out.println

para


JOptionPane.showInputDialog(" ! Digite a posição na Sequencia: " ); 

e


JOptionPane.showMessageDialog(null,"Posição "+(i+3)+" = "+d);

não funcionou. Alguem poderia me dizer onde esta o erro?
meu codigo completo

package br.com.fibonassi;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.swing.JOptionPane;


// Sequência de Fibonassi
public class Fibonassi 
{
	public static void main(String[] args) throws IOException 
	{
		// metodo q ira fazer a leitura   
		BufferedReader teclado = new BufferedReader(new InputStreamReader( System.in ));   
			  
			    String posicao;   
			    int a=1;   
			    int b=1;   
			    int c=0;
			    int d=0;
			    int i=0;
			       
			    System.out.println();   
			       
			    System.out.print(" ! Digite a posição na Sequencia: " );   
			  
			    posicao = teclado.readLine();
			    c = Integer.parseInt(posicao);
			   		    
			    while ((i+3)!=c)
			    {
			    	++i;
			    	d=a+b;
			    	a=b;
			    	b=d;
			    	//System.out.println ("Posição "+(i+3)+" = "+d);
			    }
			    System.out.println ("Posição "+(i+3)+" = "+d);
	}
}

Fala cara, blza?

Vc postou o código com o System.out.println().
Poste o seu código com JOptionPane para saber onde esta o erro.
Aliás, mostra alguma mensagem de erro?

Abraço

Caro cleyvison,

Acho que sua dúvida é esta:

[code] import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.swing.JOptionPane;

// Sequência de Fibonassi
public class Fibonassi
{
public static void main(String[] args) throws IOException
{
BufferedReader teclado = new BufferedReader(new InputStreamReader( System.in ));

             String posicao;     
             int a=1;     
             int b=1;     
             int c=0;  
             int d=0;  
             int i=0;  
                  
             System.out.println();     
                  
             JOptionPane.showMessageDialog(null, " ! Digite a posição na Sequencia: " ); 
             
             posicao = teclado.readLine();  
             c = Integer.parseInt(posicao);  
                       
             while ((i+3)!=c)  
             {  
                 ++i;  
                 d=a+b;  
                 a=b;  
                 b=d;  
                 //System.out.println ("Posição "+(i+3)+" = "+d);  
             }  
             JOptionPane.showMessageDialog(null, "Posição "+ (i+3) +" = " +d);  
 }  

} [/code]

Espero ter ajudado.

[quote=Eduardog]Caro cleyvison,

Acho que sua dúvida é esta:

[code] import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.swing.JOptionPane;

// Sequência de Fibonassi
public class Fibonassi
{
public static void main(String[] args) throws IOException
{
BufferedReader teclado = new BufferedReader(new InputStreamReader( System.in ));

             String posicao;     
             int a=1;     
             int b=1;     
             int c=0;  
             int d=0;  
             int i=0;  
                  
             System.out.println();     
                  
             JOptionPane.showMessageDialog(null, " ! Digite a posição na Sequencia: " ); 
             
             posicao = teclado.readLine();  
             c = Integer.parseInt(posicao);  
                       
             while ((i+3)!=c)  
             {  
                 ++i;  
                 d=a+b;  
                 a=b;  
                 b=d;  
                 //System.out.println ("Posição "+(i+3)+" = "+d);  
             }  
             JOptionPane.showMessageDialog(null, "Posição "+ (i+3) +" = " +d);  
 }  

} [/code]

Espero ter ajudado.[/quote]
??? Não entendi.

JOptionPane.showMessageDialog(null, " ! Digite a posição na Sequencia: " ); 

Para qual variável vai a posição digitada?
Não deveria ser assim?

posicao = JOptionPane.showInputDialog(null,"! Digite a posição na Sequencia: "); c = Integer.parseInt(posicao);
Não seria isso???

Abraço

deixe eu tentar me expressar melhor

package br.com.fibonacci;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.swing.JOptionPane;


// Sequência de Fibonacci
public class Fibonacci 
{
	public static void main(String[] args) throws IOException 
	{
		// metodo q ira fazer a leitura   
		BufferedReader teclado = new BufferedReader(new InputStreamReader( System.in ));   
			  
			    String posicao;   
			    int a=1;   
			    int b=1;   
			    int c=0;
			    int d=0;
			    int i=0;
			       
			    System.out.println();   
			       
		    System.out.print(" Digite a posição na Sequencia: " );   /* Aqui insiro a posição que quero da sequencia*/
                                    JOptionPane.showInputDialog(null, " ! Digite a posição na Sequencia: " );   // Esta parte funciona

			  
			    posicao = teclado.readLine();
			    c = Integer.parseInt(posicao);
			   		    
			    while ((i+3)!=c)
			    {
			    	++i;
			    	d=a+b;
			    	a=b;
			    	b=d;
			    	//System.out.println ("Posição "+(i+3)+" = "+d);
			    }
			    System.out.println ("Posição "+(i+3)+" = "+d);/* para mostra o resoltadfo na consele assim funciona*/

                                                   JOptionPane.showMessageDialog(null, "Posição "+ (i+3) +" = " +d);     /*Mas, o que eu quero é isso aqui e não ta funcionando */


	}
}

acho que agora me expressei melhor…

um abrçao

Então cara,

Eu colei seu código aqui e funcionou.
Mostrou no console e no showMessageDialog() o resultado, normalmente.
Com vc não chega nem a mostrar ou é outra coisa?
Mostra erro?

Abraço

Não mostra erro. A primeira “caixa” é apresentada mas, ele não mostar o resultado


                                                    JOptionPane.showInputDialog(null, " ! Digite a posição na Sequencia: " ); 
			    posicao = teclado.readLine();
			    c = Integer.parseInt(posicao);
			   		    
			    while ((i+3)!=c)
			    {
			    	++i;
			    	d=a+b;
			    	a=b;
			    	b=d;
			    	//System.out.println ("Posição "+(i+3)+" = "+d);
			    }
			    JOptionPane.showMessageDialog(null, "Posição "+ (i+3) +" = " +d);     

Então cara, o showInputDialog() precisa de um retorno, que neste caso será uma String.
é só vc pegar a String “posicao”, que vc estava usando com o BufferedReader e usar assim:

posicao = JOptionPane.showInputDialog(null," ! Digite a posição na Sequencia: " ); c = Integer.parseInt(posicao);
Daí vc nem precisa do BufferedReader :smiley:

Tente ai.

Abraço

mas, isso eu estou fazendo aqui


JOptionPane.showInputDialog(null, " ! Digite a posição na Sequencia: " ); 
			    posicao = teclado.readLine();
			    c = Integer.parseInt(posicao);

Não cara,
No meu exemplo, o conteúdo digitado no showInputDialog() vai para a String “posicao”.
No seu, o showInputDialog() não tem uma variável para retornar o resultado. e aí ele espera pelo readLine() do BufferedReader para armazenar na String “posicao”.
No seu código, se vc tirar o showInputDialog() vai dar na mesma.
No meu, se tirar não vai funcionar.

Vamos fazer de outro jeito:
Tire o BufferedReader e faça assim:

c = Integer.parseInt(JOptionPane.showInputDialog(null, " ! Digite a posição na Sequencia: " ));

O que vc digitar já vai cair na conversão.

Faça os testes.

Abraço

agora funcionou


package br.com.fibonacci;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.swing.JOptionPane;


// Sequência de Fibonacci
public class Fibonacci 
{
	public static void main(String[] args) throws IOException 
	{
		// metodo q ira fazer a leitura   
		BufferedReader teclado = new BufferedReader(new InputStreamReader( System.in ));   
			  
			    String posicao = null;   
			    int a=1;   
			    int b=1;   
			    int c=0;
			    int d=0;
			    int i=0;
			       
			    posicao = JOptionPane.showInputDialog(null, " ! Digite a posição na Sequencia: " );
			    c = Integer.parseInt(posicao);
			   		    
			    while ((i+3)!=c)
			    {
			    	++i;
			    	d=a+b;
			    	a=b;
			    	b=d;
			    }
			 
			    JOptionPane.showMessageDialog(null, "Posição "+ (i+3) +" = " +d);     
	}
}

a questao era a seguinte


posicao = teclado.readLine();   // este comando não captura informações digitadas na "caixa", so lê console...

fazendo assim


posicao = JOptionPane.showInputDialog(null, " ! Digite a posição na Sequencia: " );

minha variavel “posicao” recebo o valor digitado dai na linha seguinte converto e o resto são os calculos…

muito obrigado ao que me auxuliaram nesta tarefa…