Não sei como recuperar o valor de um vetor dentro de uma funcao
7 respostas
F
fbMendes
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.
Posta o codigo ou parte dele pra gente poder ajuda melhor
F
fbMendes
publicvoidarquivo(){try{// Abrindo um arquivo texto para LeituraFileReaderler=newFileReader("teste.txt");BufferedReaderleitor=newBufferedReader(ler);StringTokenizerst=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 CAMPOSst=newStringTokenizer(linha,";");Stringdados=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(FileNotFoundExceptionex){JOptionPane.showMessageDialog(null,("Arquivo especificado não encontrado !!!!."));}catch(NoSuchElementExceptionex1){System.out.println("Erro --> "+ex1);}catch(ArrayIndexOutOfBoundsExceptionex2){JOptionPane.showMessageDialog(null,("Quantidade de campos maior que o tamanho do VETOR"));}catch(Exceptionex3){ex3.printStackTrace();}}// OpenGLpublicvoidinit(GLAutoDrawabledrawable){gl=drawable.getGL();glu=newGLU();//glDrawable = drawable;drawable.setGL(newDebugGL(gl));//glDrawable.setGL( new DebugGL(gl) );gl.glClearColor(1.0f,1.0f,1.0f,1.0f);}publicvoiddisplay(GLAutoDrawablearg0){//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
fbMendes
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
fbMendes
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
fbMendes
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.