Como calcular a circunferência?

Java

09/04/2009

Salve! Preciso calcular os valores de uma circunferência: [b]1)[/b] Fórmula da circunferência -> (2 * pi * r); e [b]2)[/b] Fórmula da área -> (pi ao quadrado); Vejam como eu codifiquei:
import java.util.Scanner;

public class Circunferencia {

	public static void main (String args[]) {

		Scanner input = new Scanner (System.in);

		int raio;

		float diametro;
		float circunferencia;
		float area;
		float pi;

		pi = 3.14159;

		System.out.print ("Digite o valor do raio: ");
		raio = input.nextInt();

		System.out.printf ("O diamentro e: %d\n", (2 * raio));
		System.out.printf ("A circunferencia e: %d\n", (2 * pi * raio));
		System.out.printf ("A area e: %d\n", (pi * pi));
                
                 // E assim por diante...
Entretanto, recebi do compilador um erro: [b]... possible loss of precision found : double required: float pi = 3.14159... [/b] O que há de errado com este código?
Paulo Cassiano

Paulo Cassiano

Curtidas 0

Respostas

Gustavo Steigert

Gustavo Steigert

09/04/2009

O Java trata números decimais como double, por padrão. Logo, na atribuição "pi = 3.14159;" você está tentando colocar um double dentro de um float. Esse é o motivo do erro... Pra resolver isso, apenas coloque um "f" na frente do decimal, ficando assim: pi = 3.14159f;
GOSTEI 0
Paulo Cassiano

Paulo Cassiano

09/04/2009

Não adiantou, olha o erro que dá:
Digite o valor do raio: 2
O diamentro e: Exception in thread "main" java.util.IllegalFormatConversionExcep
tion: f != java.lang.Integer
        at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:397
8)
        at java.util.Formatter$FormatSpecifier.printFloat(Formatter.java:2718)
        at java.util.Formatter$FormatSpecifier.print(Formatter.java:2664)
        at java.util.Formatter.format(Formatter.java:2430)
        at java.io.PrintStream.format(PrintStream.java:899)
        at java.io.PrintStream.printf(PrintStream.java:800)
        at Pag55e228.main(Pag55e228.java:24)
O que fazer?
GOSTEI 0
Gustavo Steigert

Gustavo Steigert

09/04/2009

Poste o código completo para analisarmos...
GOSTEI 0
Gabriel Millian

Gabriel Millian

09/04/2009

Em primeiro lugar, não crie uma variável para armazenar o valor de PI. Ela já existe dentro de uma classe chamada Math, então toda vez que você precisar de PI, use por exemplo:
double raio = [NUMERO];
double circunferencia = 2 * Math.PI * raio;
Em segundo lugar, para resolver o seu problema, declare todas as variáveis como sendo do tipo double. Falow
GOSTEI 0
Gustavo Steigert

Gustavo Steigert

09/04/2009

[quote="gabrielpl"]Em primeiro lugar, não crie uma variável para armazenar o valor de PI. Ela já existe dentro de uma classe chamada Math, então toda vez que você precisar de PI, use por exemplo:
double raio = [NUMERO];
double circunferencia = 2 * Math.PI * raio;
Em segundo lugar, para resolver o seu problema, declare todas as variáveis como sendo do tipo double. Falow
Isso corrigiria o problema, mas se fosse pra pensar assim nem existiria float. O double possui 64 bits de precisão, portanto ocupa o dobro de memória de um float.
GOSTEI 0
Gabriel Millian

Gabriel Millian

09/04/2009

Blz, o double é um problema terrível com toda a memória que ele consome.
float pi = (float)Math.PI;
float raio = 2.345f;
float circunferencia = 2 * pi * raio;
Falow
GOSTEI 0
Carlos Heuberger

Carlos Heuberger

09/04/2009

Oi, voce esta "tentando" mostrar o resultado usando %d com um valor float, acho que assim nao funciona. Se nao me engano, %d eh para numeros inteiros (int). De uma olhada no manual para ver o formato usado para floats. []]]
GOSTEI 0
Carlos Heuberger

Carlos Heuberger

09/04/2009

PS: a area eh pi * r * r :-)
GOSTEI 0
Jéferson Flores

Jéferson Flores

09/04/2009

import java.util.Scanner;

public class Circunferencia
  {
   public static void main (String args[])
     {
      Scanner input = new Scanner(System.in);

      int raio;

      double diametro;
      double circunferencia;
      double area;

      System.out.print ("Digite o valor do raio: ");
      raio = input.nextInt();

      System.out.printf ("Diamentro: %d\n", (2 * raio));
      System.out.printf ("Circunferencia: %.2f\n", ((2 * Math.PI) * raio));
      System.out.printf ("Area: %f\n", Math.pow(Math.PI, 2));
    }
  }
GOSTEI 0
Osmar Martinez

Osmar Martinez

09/04/2009

Fiz assim e deu certo! [quote="pretorianobr"]
import java.util.Scanner;

public class Circunferencia
{
	public static void main( String[] args )
	{
		Scanner input = new Scanner( System.in );
		
		int raio;
		
		float diametro;
		float circunferencia;
		float area;
		
		System.out.print( "Digite o valor o raio: " );
		raio = input.nextInt();
		
		System.out.printf( "O diamentro é: %d\n", ( 2 * raio ) );
		System.out.printf( "A circunferência é: %.2f\n", ( 2 * Math.PI * raio ) ); 
		System.out.printf( "A área é: %.2f\n", ( Math.PI * raio * raio ) );
	}
}
GOSTEI 0
Ryuuji

Ryuuji

09/04/2009

[quote="pretorianobr"]Fiz assim e deu certo! [quote="pretorianobr"]
import java.util.Scanner;

public class Circunferencia
{
	public static void main( String[] args )
	{
		Scanner input = new Scanner( System.in );
		
		int raio;
		
		float diametro;
		float circunferencia;
		float area;
		
		System.out.print( "Digite o valor o raio: " );
		raio = input.nextInt();
		
		System.out.printf( "O diamentro é: %d\n", ( 2 * raio ) );
		System.out.printf( "A circunferência é: %.2f\n", ( 2 * Math.PI * raio ) ); 
		System.out.printf( "A área é: %.2f\n", ( Math.PI * raio * raio ) );
	}
}
[img]http://javafree.uol.com.br/files_user/files/1/50/D3/jackie-chan-meme.png[/img]
GOSTEI 0
Yoshimitsu

Yoshimitsu

09/04/2009

Fiz esse programa no NetBeans quando tava começando. Vê se é o que você precisa, que eu mando o código. Ele calcula circunferência, área, diâmetro e raio.
GOSTEI 0
Carlos Heuberger

Carlos Heuberger

09/04/2009

[quote="Yoshimitsu"]Postei repetido, achei que não tivesse criado. mals
[quote="[b]apagar.jpg[/b]"] [img]http://javafree.uol.com.br/files_user/files/4/60/B9/apagar.jpg[/img]
GOSTEI 0
Yoshimitsu

Yoshimitsu

09/04/2009

Foi mal! Sou novo aqui, mas hoje já aprendi duas coisas novas: editar e apagar!!!
GOSTEI 0
POSTAR