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! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static int[] ampliarArray(int[] umArray, int fator)
{
int oldLength = umArray.length;
int newLength = (oldLength + 1);
int[] newArray = new int[newLength];
for(int i = 0; i < oldLength; i++)
{
newArray[i] = umArray[i];
}
newArray[oldLength] = fator;
return newArray;
}
public static void main (String[] args) throws java.lang.Exception
{
int[] array = {1,2,3,4,5};
for(int i = 0; i < array.length; i++)
{
System.out.print(array[i]);
System.out.print(' ');
}
System.out.println();
System.out.println();
array = ampliarArray(array, 6);
for(int i = 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.