Bom, o meu problema é o seguinte:
Estou fazendo um exercício que pede pra simular o lançamento de dois dados e pegar a soma deles. Depois armazenar em um array a quantidade de somas iguais que houveram e ainda apresentar a porcentagem de cada soma em relação ao total de lançamentos.
Só que quando executo, no lugar que deveria aparecer a porcentagem, aparece uma mensagem dizendo:
Exception in thread "main" java.util.IllegalFormatConversionException: f != java.lang.Integer
O código segue abaixo:
/**
*Simula lançamento de dois dados e sua soma,
*depois calcula as somas e as compara
*
*@Jonathan Cardoso Silva
*@11/07/2008
*/
import java.util.*;
public class Dado
{
Random gerar = new Random();
/**Array que armazena as somas dos dados
*posicao 0 equivale à soma 2 nos dados, 1 equivale a 3 e etc..
*/
int Conta[] = new int[11];
public void lancamento()
{
int Dado1 = 1 + gerar.nextInt(6);
int Dado2 = 1 + gerar.nextInt(6);
int sum = Dado1 + Dado2;
contabilidade(sum);
}
/**Método que conta quantas "somas" do mesmo valor houveram*/
public void contabilidade(int soma)
{
Conta[soma - 2] += 1;
}
public int getConta(int i)
{
return Conta[i];
}
/**Dá a porcentagem de determinada soma*/
public double getPorcentagem(int i,int total)
{
double result = (((double)Conta[i]/total) * 100);
return result;
}
}
E o executável é:
import java.util.Scanner;
public class DadoTest
{
public static void main(String args[])
{
Dado A = new Dado();
Scanner input = new Scanner(System.in);
System.out.printf("Digite quantas vezes o dado deve ser lancado:\n");
int QUANT = input.nextInt();
for(int i = 0;i < QUANT;i++)
A.lancamento();
System.out.printf("Soma\tTotal\tPorcentagem\n");
for(int i = 0;i < 11;i++)
{
System.out.printf("%d\t%d\t%.2f %%\n",i + 2, A.getConta(i),A.getConta(i),A.getPorcentagem(i,QUANT));
}
}
}
Nao estou entendendo onde está o erro, me ajudem por favor...