Iae galerinha, professor passou um trabalho pra fazer eu fiz e apresentei ontem, ele achou o trabalho bom e tal, mas ele disse que eu poderia economizar mais linhas de código colocando todos os println dentro de um unico for e baixou minha nota por isso aff… eu tentei aqui e não consegui sempre estoura os vetores.
Explicando o que o programa faz
(PARTE 1) ele joga um dado N vezes e diz quantas vezes deu cada face
(PARTE 2) ele joga 2 dados N vezes e diz quantas vezes deu cada soma possivel.
(PARTE 3) ele joga 3 dados N vezes e diz quantas vezes deu cada soma possivel.
obrigado a todos que puderem ajudar.
import java.util.Scanner;
public class SimulacaoDeDados {
public static void main (String args[]) {
int dados[] = new int[7];
int soma2Dados[] = new int[13];
int soma3Dados[] = new int[19];
Scanner s = new Scanner(System.in);
System.out.println("Digite o número de vezes que os dados serão lançados");
int n = s.nextInt();
// PARTE 1
for (int i=0; i<n; i++) {
dados[(int) (1 + Math.random() * 6)]+=1;
}
// PARTE 2
for (int i=0; i<n; i++) {
soma2Dados[(int) (1 + Math.random() * 6) + (int) (1 + Math.random() * 6)]+=1;
}
// PARTE 3
for (int i=0; i<n; i++) {
soma3Dados[(int) (1 + Math.random() * 6) + (int) (1 + Math.random() * 6) + (int) (1 + Math.random() * 6)]+=1;
}
// IMPRIME PARTE 1
System.out.println("Lançamento de um dado " + n + " vezes e mostrando quantas vezes deu cada face do dado.");
for (int i=1; i<dados.length; i++) {
System.out.println("Face " + i + ": " + dados[i] + "x");
}
// IMPRIME PARTE 2
System.out.println("Lançamento de dois dados " + n + " vezes e a quantidade de vezes que deu cada soma possível.");
for (int i=2; i<soma2Dados.length; i++) {
if (soma2Dados[i] > 0) {
System.out.println("Soma = " + i + "\t" + soma2Dados[i] + "x");
}
}
// IMPRIME PARTE 3
System.out.println("Lançamento de três dados " + n + " vezes e a quantidade de vezes que deu cada soma possível.");
for (int i=3; i<soma3Dados.length; i++) {
if (soma3Dados[i] > 0) {
System.out.println("Soma = " + i + "\t" + soma3Dados[i] + "x");
}
}
}
}
o modo que eu tentei e queria fazer imprimir os dados em um unico for foi ± assim, mais ae n imprimiria os blocos tipo PARTE 1, PARTE 2 e PARTE 3 imprimiria uma linha de cada por vez e não ficaria legal isso -.- eu to começando a achar q o professor não vai com minha cara :evil:
for (int i=0; i<soma3Dados.length; i++) {
System.out.println("Face " + i + ": " + dados[i] + "x");
if (soma2Dados[i] > 0) {
System.out.println("Soma = " + i + "\t" + soma2Dados[i] + "x");
}
if (soma3Dados[i] > 0) {
System.out.println("Soma = " + i + "\t" + soma3Dados[i] + "x");
}
}


estamos iniciando OO, mas olha você me deu tanta força que eu poderia criar metodos e funções que eu acabei dando uma lida aqui e acho que melhorei um pouquinho o meu código e o jeito de pensar, deve ta um pouco bagunçado ainda eu acho que passei muitos parametros nos metodos, mas foi um jeito que eu arrumei, com o tempo eu vou melhorando… iae mereço um 9 pelo omenos? 8)