Como retornar um elemento aleatorio de uma Array?

No caso abaixo eu fiz com elementos string

import java.util.Scanner;

class Retorno {
	public static void main(String[] args) {
	Scanner teclado = new Scanner(System.in);
	

	String[] objetos = new String[]{"bola","osso","graveto","disco"};
        int random = (int) Math.random(objetos) * 4; //retornar o elemento do array ?

	for(int x = 0; x < 11; x++) {
	
		System.out.print("Informe o objeto: ");
		String chute = teclado.nextLine();
		
		if(chute.equals(random)) {
                     System.out.println("Parabens vc acertou o objeto!");
                }
}
}

sei que a formataçao do codigo tem umas coisinhas erradas, mas é um esboço e ja da pra entender o que eu quero

alguem poderia me ajudar

abs

Você acessa elementos num array através de um índice.

No seu caso, você precisa escolher um indíce de forma aleatório.

Ou seja, aquela variavel random, representaria seu índice.


  int indiceSorteado = ... // sorteia um índice do array, random entre 0 e tamanho do array
  String objetoSorteado = objetos[indiceSorteado];

opa entendi, mas tem um problema agora, pq toda vez que eu escrevo bola ele acerta, acho que ele nao esta percorrendo os demais

[code]import java.util.Scanner;

class MasterMind {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

for(int x = 0; x < 11; x++) {
        String[] cor = new String[]{"bola","osso","graveto","disco"};
        int random = (int) Math.random() * 4;  
        String indice = cor[random];
    
	System.out.print("Informe o objeto: ");
	String chute = teclado.nextLine();
	
	if(chute.equals(indice)) {
               System.out.println("Voce acertou!!!");
            } else {
               System.out.println("Voce errou");
            }

     }
    }

}[/code]

como proceder?

aproveitando o espaço, caso o cara acerte o objeto, como eu faço pra excluir o elemento que ele acertou da array ?

Abs

edit: vou mudar o elemento do array para null vamos ver se funfa

Desculpe não li muito bem, porem pelo titulo do post e somente por isso eu faria isso…


private SeuArray getAleatorio(List<SeuArray> lista){
	Random random = new Random();
	return lista.get(random.nextInt(lista.size));
}

desculpe tiver algum errinho não testei mais ta ai a ideia saca…

para remover use o metodo equal para achar o indice e depois delete, claro que tem varias maneiras de fazer isto… uma bem simples é assim.


List<String> list = new ArrayList<String>();
		list.add("a");
		list.remove(0);

[quote=luivilella]Desculpe não li muito bem, porem pelo titulo do post e somente por isso eu faria isso…


private SeuArray getAleatorio(List<SeuArray> lista){
	Random random = new Random();
	return lista.get(random.nextInt(lista.size));
}

desculpe tiver algum errinho não testei mais ta ai a ideia saca…[/quote]

to tentando fazer sem usar get() set(), e sem OO, estou meio limitado em usar as classes, pois nao cheguei nessa parte do curso ainda, apesar de ja saber manipular um pouco

o jeito do segundo cara que respondeu funcionou, mas toda vez que chuto “bola” ele acerta
como se o Math.random nao estivesse retornando os outros objetos da array

[quote=luivilella]para remover use o metodo equal para achar o indice e depois delete, claro que tem varias maneiras de fazer isto… uma bem simples é assim.

[code]

List list = new ArrayList();
list.add(“a”);
list.remove(0);
[/code][/quote]

joia

Amigo ta ae… espero que ajude nos seus estudos…

package teste;

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

public class Teste {

	public static void main(String[] args) {
		List<String> objetos = new ArrayList<String>();
		objetos.add("bola");
		objetos.add("osso");
		objetos.add("graveto");
		objetos.add("disco");
		System.out.println("Tamanho inicial lista: " + objetos.size());

		Random random = new Random();
		String sorteada = objetos.get(random.nextInt(objetos.size()));

		String usuarioDigitou = "disco";

		if (sorteada.equals(usuarioDigitou)) {
			System.out.println("ACERTOU");
			for (int i = 0; i < objetos.size(); i++) {
				if (objetos.get(i).equals(sorteada)) {
					objetos.remove(i);
					break;
				}
			}
		}

		System.out.println("Tamanho final lista: " + objetos.size());
	}
}

[quote=luivilella]Amigo ta ae… espero que ajude nos seus estudos…

[code]
package teste;

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

public class Teste {

public static void main(String[] args) {
	List<String> objetos = new ArrayList<String>();
	objetos.add("bola");
	objetos.add("osso");
	objetos.add("graveto");
	objetos.add("disco");
	System.out.println("Tamanho inicial lista: " + objetos.size());

	Random random = new Random();
	String sorteada = objetos.get(random.nextInt(objetos.size()));

	String usuarioDigitou = "disco";

	if (sorteada.equals(usuarioDigitou)) {
		System.out.println("ACERTOU");
		for (int i = 0; i < objetos.size(); i++) {
			if (objetos.get(i).equals(sorteada)) {
				objetos.remove(i);
				break;
			}
		}
	}

	System.out.println("Tamanho final lista: " + objetos.size());
}

}

[/code][/quote]

no futuro sim hehe
mas estou tentando fazer sem usar arraylist, get(), set(), OO
nao estou nessa parte ainda, e o professor da facul pediu como requisitos que agente se virasse com programaçao procedural mesmo
só usei scanner pois é fundamental

abs

ai ideia é a mesma é troque o list para para o que vc precisa nao use get e talz pegue este e mude…