galera porq quando crio um Random com 4 strings ou mais da certo conforme abaixo…
public class Treino {
public static void main(String[] args) {
Cartas c = new Cartas();
c.sorteioC();
String nome;
String[] nomes = {"Fogo", "Água","Pedra", "Raio", "Natureza"};
nome = nomes[(int)(Math.random()*nomes.length)];
System.out.println(nome);
mas quando eu uso apenas 2 variáveis o random so aponta para primeira …
String[] nomes = {“Lutador”, “Guerreiro”};
nome = nomes[(int)(Math.random()*nomes.length)];
O que você quer dizer com “só aponta pra primeira”? Está saindo mais “Lutador” (posição 0) ou “Guerreiro” (posição 1)?
De qualquer forma, sua multiplicação Math.random()*nomes.length está aumentando as chances de sair um número maior que 1, o que provavelmente faz o cast para int retornar 1. É esse seu problema?
De qualquer forma, se você precisa de um número inteiro entre 0 e o tamanho do vetor, é mais simples usar a classe random e o método nextInt, que já retorna o número inteiro na faixa desejada.
Se o que está no vetor é Lutador (com L maiúsculo) e você está comparando com lutador (l minúsculo), vai dar loop infinito mesmo, pois o equals considera essa diferença. Você precisa usar equalsIgnoreCase ou comparar com Lutador com L maiúsculo. Veja o link do ideone que coloquei.
sei q podia usar da outra forma como no link (e vou usar ela mesmo), só queria entender por q no q fiz não deu certo mesmo com letras iguais ou usando equalsIgnoreCase.