Não sei como recuperar o valor de um vetor dentro de uma funcao

7 respostas
F

Bom pessoal, tenhu uma grande duvida.
Abro um arquivo texto onde dentro dele contém numero (float) para um vetor [x],[y],[z], e consigo pegar este valor e imprimir na tela, fazendo um teste com Sys…out.
Porém nesta mesma classe eu tenhu uma funcao, e dentro desta funcao preciso recuperar o vetor e seu valores.
pois irie usar em um comando (glVertex3f(vetor[x],vetor[y],vetor[z])), entretando naum consigo pegar este valor.

Caso alguem tenha a solucao deste problema ficaria muito grato.
Mas mesmo assim obrigado pela atencao.

7 Respostas

leo_amorim

Posta o codigo ou parte dele pra gente poder ajuda melhor :wink:

F
public void arquivo() {
       

       try {
          // Abrindo um arquivo texto para Leitura
          FileReader ler = new FileReader("teste.txt");
          BufferedReader leitor = new BufferedReader(ler);  
          StringTokenizer st = null;


          //A cada iteração, lê uma linha do arquivo e atribui-a a linha:
          while ((linha = leitor.readLine()) != null) {

             // UTILIZA DELIMITADOR , PARA DIVIDIR OS CAMPOS
            st = new StringTokenizer(linha, ";");
             String dados = null;
             
                          
             while (st.hasMoreTokens()) {                
                 // Pega os campos e joga no "vetor[x]"

                dados = st.nextToken();
                this.vetor[a] = Float.parseFloat(dados);
                a++;
                System.out.println("Campo do Vetor["+0+"]: " + this.vetor[2]);
             }             
          }
          leitor.close();
          ler.close();

       } catch (FileNotFoundException ex){
           JOptionPane.showMessageDialog(null, ("Arquivo especificado não encontrado !!!!."));
       } catch (NoSuchElementException ex1){
           System.out.println("Erro --> " + ex1);
       } catch (ArrayIndexOutOfBoundsException ex2){
           JOptionPane.showMessageDialog(null, ("Quantidade de campos maior que o tamanho do VETOR"));
       } catch (Exception ex3) {
          ex3.printStackTrace();
       }
    }

   // OpenGL
   
   public void init( GLAutoDrawable drawable ) {
	gl = drawable.getGL();
	glu = new GLU();
	//glDrawable = drawable;
        drawable.setGL(new DebugGL(gl));
	//glDrawable.setGL( new DebugGL(gl) );

	gl.glClearColor( 1.0f, 1.0f, 1.0f, 1.0f );
    }

    public void display( GLAutoDrawable arg0 ) {
	//float vetor[] = new float [20];
        //vetor[b] = vetor[a];
        //this.vetor[0];
        gl.glClear( GL.GL_COLOR_BUFFER_BIT );

	gl.glMatrixMode( GL.GL_MODELVIEW );
	gl.glLoadIdentity( );
	glu.gluOrtho2D( 30.0f,  -30.0f,  30.0f,  -30.0f );

	gl.glColor3f( 0.0f, 0.0f, 0.0f );
	gl.glBegin( GL.GL_TRIANGLES );
		gl.glVertex3f(  this.vetor[0], this.vetor[1], this.vetor[2] );
		gl.glVertex3f( this.vetor[3], this.vetor[4], this.vetor[5] );
                gl.glVertex3f( this.vetor[6], this.vetor[7], this.vetor[8] );
                System.out.println("Campo do Vetor["+0+"]: " + this.vetor[2]);
	gl.glEnd();

	gl.glFlush();
    }
F

eu preciso recuperar o vetor da linha 23 (vetor[a]) para usar dentro da funcao display,
percebe-se que eu tenhu que usar o vetor[0], vetor[1], vetor[2]…

Grato pela Ajuda.

leo_amorim

Cara não entendi você esta querendo retornar a posição 23 do teu vetor, o que te impede já que o vetor é global?

F

public class Arquivo implements GLEventListener, KeyListener { private GL gl; private GLU glu; private GLDrawable glDrawable; public int a = 0; public String linha = null; public float[] vetor= new float [20]; public int b; public void keyReleased( KeyEvent arg0 ) { } public void keyTyped( KeyEvent arg0 ) { }

Eu declarei sim o vetor e a variavel a, entaum, eu sei que está global, mas nao sei porque eu nao consigo pegar os valores.
E qdo eu compilo nao aparece erro nenhum, mas na linha 69 eu coloquei um Sys…out… e ele imprimi 0.0, em vez de imprimir
o numero certo dentro do vetor[2], entretando na linha 25 coloquei outro Sys…out e ele imprime o numero certo.

Pessoal agradeco por vcs estarem tentando me ajudar, e peco desculpas se nao to sendo muito claro no meu problema.

F

Pessoal eu já consegui responder o problema que eu tinha.

Muito Obrigado pela atencao de todos.

O meu problema era que na hora de declarao o vetor eu naum coloquei static, por isso naum recuperava o valor.

public static float [] vetor = new float [20];

Sefo

Qual o erro que está sendo gerado? Erro de compilação ou execução? Vc poderia especificar um pouco mais por favor.

No código apresentado vc não declara a variavel a.

Auf Wiedersehen!!!

Criado 20 de outubro de 2009
Ultima resposta 21 de out. de 2009
Respostas 7
Participantes 3