Problema com Random; nextInt()

7 respostas
Rudy

Aloha pessoa!
Alguem pode me dizer por que esse algoritmo ta acusando erro na linha 24.
:?:

import javax.swing.JOptionPane;
   import java.util.Random;

    class SearchBinary
   {
      private int [] array;
   
       public SearchBinary()
      {
         array = new int[50];
         Random GeraInt = new Random(); 
      }
   
       public void loadArray()
      {
         String SRA =  JOptionPane.showInputDialog(null, "Informe o Modelo de RA", "Modelo de RA",
            													JOptionPane.PLAIN_MESSAGE);
         int RA = Integer.parseInt(SRA);
         
         for(int i = 0;i > array.length;i++)
         {
            array[i] = RA++;
            i++;
            array[i] = geraInt.nextInt(25);
         }
      	
         String SRAx =  JOptionPane.showInputDialog(null, "Informe o Modelo de RA", "Modelo de RA",
            													JOptionPane.PLAIN_MESSAGE);
         int RAx = Integer.parseInt(SRA);
			 buscabinariar(array, 0, array.length-1, RAx);
      }
        
       public boolean buscabinariar(int vet[],int inicio,int fim,int x) {
         if (inicio > fim)
            return false;
         else {
            int meio=(inicio+fim)/2;
            if (x == vet[meio])
               return true;
            else
               if (vet[meio] < x)
                  return buscabinariar(vet, meio+1, fim, x);
               else
                  return buscabinariar(vet, inicio, meio-1, x);
         }
      }   
   }

7 Respostas

thiago.correa

A tua variável além de estar escrita errada ela só foi declarada no construtor, ou seja ela só será visível enquanto o método contrutor estiver em execução!

scarton

Opa, blz?

Entao, vc declarou o geraInt dentro do construtor, ou seja, ele nao esta acessivel fora do construtor, coloque a declaração do Random fora do construtor que ta resolvido..

cuidado tb com os nomes, vc declarou GeraInt e ta usando geraInt..

private int [] array;
      private Random geraInt;
      
       public SearchBinary(){
         array = new int[50];
          geraInt = new Random(); 
       }

Abs

A

acrescentando, dee um olhada novamente nesta condição do for:
for(int i = 0;i > array.length;i++)
Creio que esta equivocada.

Rudy

A parte de minha variavel está declarada errada foi uma pequena distração, mas não entendi a parte de que ela só vai ser executada enquanto o construtor estiver em execução, vc pode me explicar?

Rudy

Entendido!

Entendi pessoa, então quando eu precisar utilizar um objeto de uma classe de fora ele não pode ser instanciado dentro do construtor neh?

Obrigado

thiago.correa

A parte de minha variavel está declarada errada foi uma pequena distração, mas não entendi a parte de que ela só vai ser executada enquanto o construtor estiver em execução, vc pode me explicar?

Quando você cria um objeto, o construtor desse objeto é chamado, é nesse momento (na criação do objeto) que no teu caso, o objeto geraInt iria ser, declarado, instanciado, porém ele só será visível enquanto o contrutor for executado, após o término da execução do método contrutor, o teu objeto geraInt não será mais acessível por nenhuma outra parte da tua classe, por isso estava gerando o erro!!

Thiago_Luis

Fala cara, blza?

Você criou sua variável Random localmente, no caso, dentro do construtor, ou seja, ela só é visível nele.
É só fazer o mesmo que vc fez com a variável array como o scarton disse.
Aí sim, suas duas variáveis serão visíveis “globalmente”.

Abraço

Criado 29 de maio de 2009
Ultima resposta 29 de mai. de 2009
Respostas 7
Participantes 5