[Resolvido]Array Dinâmico

Olá pessoal, estou com dúvida no seguinte, como faço para criar um array de valores inteiros com tamanho dinâmico entre 100 e 200 e popular com números aleatórios entre 0 e 100.

Abaixo segue o que eu já fiz, mas, ainda tenho muitas dúvidas de como fazer. Minha principal dúvida é como faço para criar apenas um array que os números estejam ente 100 e 200.

Obrigado pela ajuda…


import java.util.ArrayList;
import java.util.Random;

public class teste {

    public static void main(String... args) {

        int[] array = new int[100];

        for (int i = 0; i < 100; i++) {

            int[] numeros = new int[new Random().nextInt(100)];
            System.out.println("Tamanho array: " + numeros.length);
        }
    }
}


A classe Math tem um método estático random.

Esse método retorna um número pseudoaleatório entre 0.0 e 1.0

Portanto você pode invocar esse método e multiplicar por um valor, pra atingir o campo que você quer.

Se eu quisesse gerar um número inteiro de 0 a 10 com esse método faria assim:int num = (int)(Math.random() * 10);

Procure por Lists, são “arrays” que não assumem um tamanho fixo…

Estude sobre Collections, vai te ajudar bastante nestes casos!

:wink:

Valeu Ruutmann mas eu já estava dar uma lida, o que esta difícil para mim mesmo é como faço o array começar de 100 e vai até 200, precisaria criar um if?

Valeu.

Digaoneves e aí, então nesse caso tudo bem, eu consegui fazer mas, a principal dúvida é, de como faço o array entre 2 números isso sem começar do zero, tal como disse
para o Ruttman,

Valeu.

quer iterar o array iniciando no índice 100 e percorrer 100 índices? É só fazer um for normal.for(int i=100; i<200 ; i++){ System.out.println(arr[i]); }

[quote=haricsousa]Valeu Ruutmann mas eu já estava dar uma lida, o que esta difícil para mim mesmo é como faço o array começar de 100 e vai até 200, precisaria criar um if?

Valeu.[/quote]

Cara, explica melhor o que você pretende fazer.

Que assim, array sempre tem tamanho fixo. Então pra começar de 100 e ir incrementando até 200 você teria que a cada iteração cria um novo array com uma posição a mais que o anterior e trasferir os valores de um pra outro, adicionando o ultimo valor na posição a mais.

Use um ArrayList.

List<SuaClasse> lista = new ArrayList<SuaClasse>();
//seu codigo
if(lista.size() < 201) {
     lista.add(objeto);
}
else {
     //retorna uma mensagem dizendo que não pode adicionar mais nada
}

É bem isso que o digaoneves fez, nesse caso eu vou puder fazer assim certo?

import java.util.ArrayList;  
import java.util.Random;  
  
public class teste {  
  
    public static void main(String... args) {  
  
        int[]array = new int[100];  
  
        for (int i > 99; i < 201; i++) {  

            //Vai gerar números aleatórios  de 0 a 100

            int[] numeros = new int[new Random().nextInt(100)];  
            System.out.println("Numeros aleatorios: " + numeros.length);  
        }  
    }  
}  

Bem acho que seria isso, alguém pode me dizer se dessa forma esta correto ou eu preciso criar mesmo uma ArrayList?

Valeu.

pra que serve o array se você nunca usa?

você está gerando um array de tamanho aleatório, era isso que você queria?

Aí digaoneves é isso que ele esta a pedir, da uma olhada na pergunta dele, só não sei se a implementação esta certa. Nesse caso o Array não esta a definir o tamanho de 100 elementos? E se eu usasse dessa forma;



List<teste> lista = new ArrayList<teste>(); 


Poderia ser?

Valeu.

Não, do jeito que você fez, você vai criar um array com um tamanho aleatório entre 0 e 99.

Se você quiser usar ArrayList pode ser mais fácil, a própria classe se preocupa em alterar o tamanho do array interno, caso seja necessário.

E como eu crio esse Array definindo esse intervalo de valores (de 100 a 200), seria como esse que eu fiz aí? Desculpa aí pelas perguntas
mas é que ainda estou muito cru em programação.

Valeu.

Você quer que o tamanho do array seja entre 100 e 200?int[] array = new int[153];Ou que dado um array, ele seja preenchido com valores entre 100 e 200?int[]array = new int[100]; array[0] = 101 array[1] = 123; array[2] = 190; . . .

digaoneves é isso aí, o que vai acontecer é, criar um array com elementos entre 100 a 200 que vai ter o limite de 100, e nesse intervalo de 100 a 200 ele gere números aleatórios, no caso para fazer números aleatórios eu já fiz acho que esta certo.


//Vai gerar os números aleatórios.
int[] numeros = new int[new Random().nextInt(100)];

O que esta faltar agora é como acertar esse mecanismo do 100 a 200 ali em cima eu fiz consoante as ideias postadas aqui só que tu questionaste o porquê o uso do array já que ele não estava sendo usado.

Nessa linha int[] numeros = new int[new Random().nextInt(100)];

você está gerando array de tamanhos aleatórios não números de tamanhos aleatórios, se não estou enganado.

Valeu jeffe vou tentar achar uma solução.

Obrigado a todos pela ajuda. :smiley:

Blz, o problema é que não entendi muito bem o que você quer fazer, mas tenta ai e se surgir algum problema poste para que possamos lhe ajudar.

Acho que eu entendi o que o autor do tópico quer. Acho que ele quer um array que comece na posição 100 e tenha 100 posições, de forma a array[0]… array[99] não sejam válidos, mas apenas array[100] a array[199].

Se for isso mesmo, acho que não tem como, mas dá pra dar um “jeitinho”. Você poderia encapsular um array dentro de uma classe e controlar o índice dele.

Você pode implementar um método add(int indice, int valor), por exemplo, de forma que o usuário pode chamar add(110, 1), ou seja, adicionando o valor 1 à posição 110 e, por trás dos panos, você pode pegar seu array encapsulado e fazer: array[indice - 100] = 1. Dessa forma, o usuário tem a impressão de estar adicionando na posição 110, mas você adiciona na 10, já que o array nativo sempre começa com índice 0.

Outra forma, mais fácil, mas mais burra, é fazer um array de 200 posições, mas encapsulá-lo de forma que o usuário só possa acessar as 100 primeiras (com um if, por exemplo). O ruim dessa estratégia, é que 100 vagas do array serão desperdiçadas.

Valeu regis_hideki pela ajuda, era bem isso, meio complicado mas resolvi com uma gambiarra rsrrsrsrrs.

Grato pela ajuda. :smiley: