Masato Posted October 4, 2012 at 03:15 PM Report #477767 Posted October 4, 2012 at 03:15 PM 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; }
HappyHippyHippo Posted October 4, 2012 at 03:29 PM Report #477768 Posted October 4, 2012 at 03:29 PM 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 Portugol Plus
Masato Posted October 4, 2012 at 03:52 PM Author Report #477771 Posted October 4, 2012 at 03:52 PM Pois mas o engraçado é que ao fazer isso ele diz que a variável está duplicada. fiz int [] v1; fiz tb assim int []v1 = new int [v.lenght/2];
HappyHippyHippo Posted October 4, 2012 at 04:09 PM Report #477772 Posted October 4, 2012 at 04:09 PM (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 October 4, 2012 at 04:11 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Masato Posted October 4, 2012 at 11:12 PM Author Report #477819 Posted October 4, 2012 at 11:12 PM ahhh claro, é isso. É uma questão de sintaxe que me estava a escapar Thanks
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now