Limitando casas decimais em float / restringindo valor de variáveis usando Scanner

7 respostas
M

Amigos,

Boa tarde.

Começei a engatinhar em programação e resolvi iniciar com linguagem Java. Sou auto-didata e peço a ajuda de voce com algumas duvidas:

Desenvolvi o código abaixo com o objetivo de calcular a media final de alunos e retornar para o usuario se o mesmo foi aprovado, reprovado ou fara prova final. Sendo assim pergunto:

1 - Como limitar os valores atribuidos as variáveis nota1, nota2 e nota3 entre 0,00 e 10,0? Usei um artificio no codigo que retorna um erro para o usuário, mas existe outra maneira mais simples?

2 - Como limitar as variáveis float em 02 casas decimais? Alguem pode explicar detalhado? Tentei fazer "media = (%.2f + %.2f + %.2f) / 3 = %.2f, nota1, nota2, nota3, (nota1 + nota2 + nota3) / 3;" mas o sistema retorna erro. Sera que "viajei"???
import java.util.Scanner;

public class Resultado {

           public static void main(String[] args) {
               Scanner resultado = new Scanner(System.in);
               float nota1;
               float nota2;
               float nota3;
               float media;

               System.out.print("Digite a primeira nota ");
               nota1 = resultado.nextFloat();
               

               System.out.print("Digite a segunda nota ");
               nota2 = resultado.nextFloat();

               System.out.print("Digite a terceira nota ");
               nota3 = resultado.nextFloat();

               media = (nota1 + nota2 + nota3) / 3;

               if (nota1 > 10.0 || nota2 > 10.0 || nota3 > 10.0 || nota1 < 0.0 || nota2 < 0.0 || nota3 < 0.00) {
               System.out.println("Voce digitou valores invalidos!");
               } else {
               
               System.out.println("Sua media foi " + media + ".");
                  }
               
               if (media >= 7 && media <= 10 && nota1 <= 10.00 && nota2 <= 10.0 && nota3 <= 10.0) {
               System.out.println("Voce esta aprovado!");

                      } 

               if (media >= 5 && media < 7 && nota1 <= 10.00 && nota2 <= 10.0 && nota3 <= 10.0) {
               System.out.println("Voce ainda tem chances, mostre seu potencial na prova final.");

                      }

               if (media < 5 && nota1 <= 10.00 && nota2 <= 10.0 && nota3 <= 10.0) {
               System.out.println("Seja mais dedicado e tente no proximo ano.");
                      }
               }   
}

7 Respostas

Janerson

amigo pesquise sobre decimalformat

DecimalFormat df =  new DecimalFormat("0.00")
M

Janerson:
amigo pesquise sobre decimalformat

DecimalFormat df =  new DecimalFormat("0.00")

Agradeço a dica mas, em que lugar da classe devo inserir esta linha de comando?

Como uma coisa puxa a outra, quando uso float não já se trata de um formato decimal ? Quero apenas limitar o número de casas decimais a serem exibidas pelo float.

Janerson

assim amigo

System.out.println(df.format(media));
F

BigDecimal é a classe indicada para trabalhar com decimais.

[]s

ViniGodoy

Por favor, não deixe o título do tópico inteiro em letras maiúsculas, e procure usar a tag code ao postar códigos.

Janerson
magalha:
Janerson:
amigo pesquise sobre decimalformat
DecimalFormat df =  new DecimalFormat("0.00")

Agradeço a dica mas, em que lugar da classe devo inserir esta linha de comando?

Como uma coisa puxa a outra, quando uso float não já se trata de um formato decimal ? Quero apenas limitar o número de casas decimais a serem exibidas pelo float.

Amigo fiz uma gambiarra aqui para vc, acredito q funcione
nao testei pq estou sem o netbeans aqui ou qualquer outra IDE
teste aí

import java.text.DecimalFormat;
import java.util.Scanner;  

  
public class ForumGuj {  
  
           public static void main(String[] args) {  
               Scanner resultado = new Scanner(System.in);  
               DecimalFormat dc = new DecimalFormat("0.00");
               float nota1 = 0;  
               float nota2 = 0;  
               float nota3 = 0;  
               float media;  
               float temp ;
               
               System.out.println("Digite as notas entre 0 e 10.0 ");
               System.out.print("Digite a primeira nota ");  
               temp = resultado.nextFloat();  
               if(temp <= 10){
                    nota1 = temp;  
               }else{
                   System.out.println("Nota Inválida!!");
                   return;
               }  
  
               System.out.print("Digite a segunda nota ");  
                  temp = resultado.nextFloat();  
               if(temp <= 10){
                    nota2 = temp;  
               }else{
                   System.out.println("Nota Inválida!!");
                   return;
               }   
  
               System.out.print("Digite a terceira nota ");  
                  temp = resultado.nextFloat();  
               if(temp <= 10){
                    nota3 = temp;  
               }else{
                   System.out.println("Nota Inválida!!");
                   return;
               }   
  
               media = (nota1 + nota2 + nota3) / 3;  
                 
                 
               if (media >= 7) {  
               System.out.println("Voce esta aprovado!\tMédia: "+dc.format(media));  
  
                      }   
  
               if (media >= 5 && media < 7 ) {  
               System.out.println("Voce ainda tem chances, mostre seu potencial na prova final.\tMédia: "+dc.format(media));  
  
                      }  
  
               if (media < 5) {  
               System.out.println("Seja mais dedicado e tente no proximo ano.\tMédia: "+dc.format(media));  
                      }  
               }     
}
M

Janerson,

Valeu! Coisa de irmão.

Criado 6 de julho de 2013
Ultima resposta 14 de jul. de 2013
Respostas 7
Participantes 4