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

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”???

[code]
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.");
                  }
           }   

}[/code]

amigo pesquise sobre decimalformat

DecimalFormat df =  new DecimalFormat("0.00")
1 curtida

[quote=Janerson]amigo pesquise sobre decimalformat

DecimalFormat df =  new DecimalFormat("0.00")

[/quote]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.

1 curtida

assim amigo

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

BigDecimal é a classe indicada para trabalhar com decimais.

[]s

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.

[quote=magalha][quote=Janerson]amigo pesquise sobre decimalformat

DecimalFormat df =  new DecimalFormat("0.00")

[/quote]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.[/quote]

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

[code]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));  
                  }  
           }     

}
[/code]

Janerson,

Valeu! Coisa de irmão.