Problema para exibir array

6 respostas
J

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...

6 Respostas

V

Coloca um try-catch dentro do seu método main… quando gerar o erro dá uma olhada no stack trace. Caso você não consiga resolver, coloque p stack trace aqui

J

Me desculpe…mas, é pq não estudei Tratamento de exceção ainda…
Vou dar uma olhada aqui e tentar fazer o que você falou

Obrigado

netShot
Jonathan_p:
Me desculpe...mas, é pq não estudei Tratamento de exceção ainda... Vou dar uma olhada aqui e tentar fazer o que você falou

Obrigado

Troque está parte (DadoTest.java)

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));  
   
      }

por está,

System.out.printf("Soma	\t	Total	\t	Porcentagem\n");

     for(int i = 0;i < 11;i++)
     {
    	 System.out.printf("%d	\t	%d	\t	%.2f\n",i + 2, A.getConta(i),A.getPorcentagem(i,QUANT));
     }
o erro está na exibição dos valores : Nesta linha :
System.out.printf("%d\t%d\t%.2f %%\n",i + 2, A.getConta(i),A.getConta(i),A.getPorcentagem(i,QUANT));
J

netShot, funcionou beleza agora!
Só não entendi porque o simples espaçamento fez funcionar… :?:

xandevieira

na verdade não foi um simples espaçamento, foi retirada uma A.getConta(i), vc estava imprimindo duas vezes

J

ah,sim…não tinha percebido

:oops:

Obrigado!!!

Criado 11 de julho de 2008
Ultima resposta 11 de jul. de 2008
Respostas 6
Participantes 4