Geração de frases[Resolvido]

Bom dia Pessoal,

Mais uma vez estou aqui tirando algumas dúvidas com vocês. O código abaixo acusa erro “ArrayIndexOutOfBoundsException” que não estou conseguindo identificar. Alguém poderia me dizer onde estou errando ? De antemão agradeço.

/**Escreva um aplicativo que utilize geração de números aleatórios para criar frases. Utilize quatro arrays de strings chamados
 * article, noun, verb e preposition. Crie uma frase selecionando uma palavra aleatoriamente de cada array na seguinte ordem:
 * article, noun, verb, preposition, article e noun. À medida que cada palavra for selecionada, concatene-a às primeiras palavras
 * na frase. As palavras devem ser separadas por espaços. Quando a frase final for enviada para saída, ela deve iniciar com uma
 * letra maiúscula e terminar com um ponto. O aplicativo deve gerar 20 frases e enviar sua saída para uma área de texto.
 * O array de artigos deve conter os artigos "the", "a", "one", "some" e "any"; o array de substantivos deve conter os substan
 * tivos "boy", "girl", "dog", "town" e "car"; o array de verbos deve conter os verbos "drove", "jumped", "ran", "walked", e
 * "skipped"; o array de preposições deve conter as preposições "to", "from", "over", "under" e "on".
 * Depois que o aplicativo for escrito, modifique-o para produzir uma breve história que consista e, várias dessas frases(e que
 * tal um escritor de teses aleatório ?)
 */

import java.util.*;

public class Aleatorios
{
	public static void main(String[] args)
	{
				
		Scanner entrada = new Scanner(System.in);
		Scanner entrada1 = new Scanner(System.in);
		Scanner entrada2 = new Scanner(System.in);
		Scanner entrada3 = new Scanner(System.in);
		
		String article[] = {"the ","a ","one ","some ", "any "};
		String noun[] = {"boy ","girl ","dog ","town ","car "};
		String verb[] = {"drove ","jumped ","ran ","walked ","skipped "};
		String preposition[] = {"to ","from ","over ","under ","on "};
		
		String frase[]= new String[20];
				
		System.out.printf("Article: %s - %s - %s - %s - %s\n",article);
		System.out.printf("Noun: %s - %s - %s - %s - %s\n",noun);
		System.out.printf("Verb: %s - %s - %s - %s - %s\n",verb);
		System.out.printf("Preposition: %s - %s - %s - %s - %s\n\n",preposition);
		
		for(int i = 0 ; i <= 20 ; i++)
		{
			while(article[i] != "" && noun[i] != "" && verb[i] != "" && preposition[i] != "")
			{
				frase[i] = article[i].concat(noun[i]).concat(verb[i]).concat(preposition[i]).concat(article[i]).concat(noun[i]);
								
				System.out.println(frase[i]);
				i++;
			}
			
		}		
		
								
	}

}

Cadê a geração de números aleatórios? Resolva isso primeiro. Do jeito que está, ele irá gerar só até a frase número 4.

Oi, como vai?

Tb não entendí bem o que vc quer dizer por números aleatórios (Qual é exatamente a sua lógica/idéia?), anyway, tirei o ArrayIndexOutOfBoundsException:

[code]

import java.util.Scanner;

public class Teste{

public static void main(String[] args){ 	
	Scanner entrada  = new Scanner(System.in); 
	Scanner entrada1 = new Scanner(System.in); 
	Scanner entrada2 = new Scanner(System.in); 
	Scanner entrada3 = new Scanner(System.in); 

	//Todos os arrays abaixo foram inicializados com 5 posições
	String article[]     = {"the ","a ","one ","some ", "any "};  
	String noun[]        = {"boy ","girl ","dog ","town ","car "}; 
	String verb[]        = {"drove ","jumped ","ran ","walked ","skipped "}; 
	String preposition[] = {"to ","from ","over ","under ","on "}; 

	String frase[] = new String[20]; 

	System.out.println("******************************** Beginning of Arrays ********************************");
	System.out.printf("Article: %s - %s - %s - %s - %s\n",article); 
	System.out.printf("Noun: %s - %s - %s - %s - %s\n",noun); 
	System.out.printf("Verb: %s - %s - %s - %s - %s\n",verb); 
	System.out.printf("Preposition: %s - %s - %s - %s - %s\n\n",preposition); 
	System.out.println("******************************** End of Arrays ********************************");

	for(int i = 0 ; i <= 4 ; i++){ 
		if(article[i] != "" && noun[i] != "" && verb[i] != "" && preposition[i] != ""){
			frase[i] = article[i].concat(noun[i]).concat(verb[i]).concat(preposition[i]).concat(article[i]).concat(noun[i]); 
			System.out.println(frase[i]); 
		} 
	}	
}

}[/code]

Bom, não deixa de já estar pegando por número mas não aleatório, o que seria o número que representa o índice do array…

Cara o que falta vc fazer é gerar um numero aleatorio usando Math.random para cada array de palavras… eu acho que fiz uma boa parte falta vc terminar, espero q vc entenda o que foi feito e nao apenas copie e cole, pq assim vc nao vai aprender nada.

public class Aleatorios {
	
    public static void main(String[] args){
	    
        String frase = new String();
        int i;
        	
        String article[] = {"the","a","one","some","any"};
        String noun[] = {"boy","girl","dog","town","car"};
        String verb[] = {"drove","jumped","ran","walked","skipped"};
        String preposition[] = {"to","from","over","under","on"};
        
        for(i = 0; i < 20; i++){
	        
	        int articleLength = article.length;
		int nounLength = noun.length;
		int verbLength = verb.length;
		int prepositionLength = preposition.length;
	        
	        int randArticle = (int) (Math.random() * articleLength);
	        int randNoun = (int) (Math.random() * nounLength);
	        int randVerb = (int) (Math.random() * verbLength);
	        int randPreposition = (int) (Math.random() * prepositionLength);
	        int randArticle2 = (int) (Math.random() * articleLength);
	        int randNoun2 = (int) (Math.random() * nounLength);
	        
	        frase = article[randArticle] + " " + noun[randNoun] + " " + verb[randVerb] + " " + preposition[randPreposition] + " " + article[randArticle] + " " + noun[randNoun2] + ".";
	        
	        System.out.println(frase);            
        }
    }
}

Oi André,

Na realidade eu quero gerar 20 frases utilizando os 04 arrays fornecidos. Utilizando as frases na ordem “artigo, substantivo, verbo, preposição, artigo e substantivo” elas terão sentido. Pelo que você falou no último tópico, acho que devo utilizar o índice do array para gerar as frases mas a partir da 5ª ela trava.

Leandro,

Devo ler mais um pouco pois fiquei na dúvida entre o método random(math) e o array de palavras(strings). Verei mais o seu código e quero aplicá-lo utilizando o método “concat” que iniciei.

Agradeço a atenção de todos.

Abs,