Jump to content

Recommended Posts

Posted

Este código dá variável v1 duplicada se eu a declarar fora dos if´s e diz que a mesma não existe se mantiver como está escrito

Alguém me pode ajudar?

static int[] secondHalf(int[] v, boolean includeMiddle)
{
int i= v.length/2;
int j=0;

if(includeMiddle==true )
{
 if(v.length%2==1)
 {
 int[]v1= new int [v.length/2+1];
 }
 else
 {
 int[]v1= new int [v.length/2];
 }
}
while (i<v.length)
{

 v1[j]=v[i];
 i=i+1;
 j=j+1;
}
return v1;
}
Posted

se indentares correctamente o código consegues ver o problema.

segue uma regra simples : as variáveis declaradas num nível não existem acima desse nível

static int[] secondHalf(int[] v, boolean includeMiddle) // estas variáveis estão declaradas ao nível da função
{
 int i= v.length/2; // variável declarada ao nível da função
 int j=0; // variável declarada ao nível da função

 if(includeMiddle==true )
 {
   if(v.length%2==1)
   {
     int[]v1= new int [v.length/2+1];  // variável declarada ao nível do bloco do if
   } // todas as variáveis declaradas dentro deste bloco serão destruidas
   else
   {
     int[]v1= new int [v.length/2];  // variável declarada ao nível do bloco do if
   } // todas as variáveis declaradas dentro deste bloco serão destruidas
 }

 while (i<v.length)
 {
   v1[j]=v[i]; // como vês, a variável v1 não se encontra declarada neste local
   i=i+1;
   j=j+1;
 }
 return v1;
}

o que terás de fazer é declarar à cabeça como fizeste com outras variável a existência desta (v1).

IRC : sim, é algo que ainda existe >> #p@p
Posted (edited)

óbvio .. então estás a declarar a variável num local onde é visível uma segunda variável com esse nome ...

e que tal fazer só

v1 = new int [v.lenght/2]; // isto não é uma declaração mas uma atribuição normal
Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.