Escreva uma função que amplia a capacidade de armazenamento de um array recebido por
parâmetro, com base em um fator de ampliação, também recebido por parâmetro, como pode ser
visto na função abaixo.
public static int[] ampliarArray(int[] umArray, float fator) {
// Todo seu código aqui
Existe um conceito na questão de array que é um tipo definido de posições, ou seja, imutável, aquele que não muda, nesse caso existe as formas de contorna isso que é criar um novo array a partir do antigo criando mais uma posição com o novo valor, só que tem um problema nesse método porque o paramento não deveria ser int fator?
Se o paramento for inteiro a solução é abaixo:
/* package whatever; // don't place package name! */importjava.util.*;importjava.lang.*;importjava.io.*;/* Name of the class has to be "Main" only if the class is public. */classIdeone{publicstaticint[]ampliarArray(int[]umArray,intfator){intoldLength=umArray.length;intnewLength=(oldLength+1);int[]newArray=newint[newLength];for(inti=0;i<oldLength;i++){newArray[i]=umArray[i];}newArray[oldLength]=fator;returnnewArray;}publicstaticvoidmain(String[]args)throwsjava.lang.Exception{int[]array={1,2,3,4,5};for(inti=0;i<array.length;i++){System.out.print(array[i]);System.out.print(' ');}System.out.println();System.out.println();array=ampliarArray(array,6);for(inti=0;i<array.length;i++){System.out.print(array[i]);System.out.print(' ');}}}
Como o estimado colega Dragoon demonstrou acima, é preciso que você entenda uma questão sobre os vetores:
Os vetores (arrays), em linguagens como o Java, tem uma propriedade bem característica: Eles são “imutáveis” no sentido de “acrescer posições”. Ou seja, um vetor com 3 posições sempre será um vetor com 3 posições. Um vetor com 7 posições sempre será um vetor com 7 posições. Então, de modo direto, não existe como “adicionar posição num vetor”.
O que pode ser feito (e foi demonstrado) é criar um novo vetor com uma capacidade igual ou superior ao vetor anterior e transferir os dados para ele. Tudo que estou falando está demonstrado na resposta do Dragoon, mas é preciso que você entenda esses conceitos de verdade.
Bons estudos!
[]'s
S
staroski1 like
Esse fator provavelmente representa o percentual de crescimento, por exemplo, 0.5 deve fazer o seu array aumentar em 50% e assim por diante.