Java é uma linguagem com suporte à orientação a objetos, pois, além das classes, possui tipos primitivos (e outras cositas más de programação estruturada).
Quando você tem um destes, escritos como estão
booleanbyteshortcharintfloatlongdouble
Você tem apenas tipos primitivos e, sendo assim, nunca poderá invocar nenhum método a partir deles. Tipos primitivos só representam os valores atribuídos à eles.
Para conseguir fazer o que você quer, você deverá utilizar as classes wrappers
BooleanByteShortCharacterIntegerFloatLongDouble
Todas do pacote java.lang
Sim, uma letra minúscula faz a diferença, troque
float.parseFloat(
por
Float.parseFloat(
L
lucas991 like
Só complementando a resposta do Luis, precisa acrescentar “f” a frente do 0.2, 0.15 e 0.1 para que elas fiquem do tipo float.
W
Wellingt14
@Luis_Augusto_Santos
Não sabia que float é primitivo, e Float é classe wrappers!. Algum lugar onde eu possa saber mais? E nunca mais esquecer essa diferença sabe… kkkkk
Outra coisa, fiz o que você pediu e os erros mudaram:
Fiz outra alteração, de: float salario, salreajustado;
para: double salario, salreajustado;
E funcionou!!! Qual o problema em utilizar o float ? Porque acusa o erro da imagem quando utilizo float?
P.S: eu alterei também a parte da leitura de Float para Double.
W
Wellingt14
@lucas99
Não entendi…
Eu tenho que fazer isso:
salreajustado = salario + (salario * Float.parseFloat(0.2));
Só que em tudo?
salario=Float.parseFloat(JOptionPane.showInputDialog(null,"Informe seu salario"));
Esse é a parte do código que o Luis disse para eu arrumar, e agora? haha.
Agradeço.
L
Solucao aceita
Luis_Augusto_Santos1 like
Cara, dá uma olhada no blog da caelum, apostilas da caelume k19.
Sobre o erro e a solução: float é um tipo primitivo (na verdade, aquelas 8 palavras reservadas que postei anteriomente, com a primeira em minúsculo, representam valores primitivos).
Ocorre que float é um tipo de dado que “cabe” dentro de um double (sendo bem bobo, o double comporta valores com o dobro do tamanho de um float).
O que ocorre é que todo valor inserido no código ou lido pelo java sempre será interpretado como double, por padrão.
Então: 0.5 10.9 10000.3
todos são double.
Neste caso, você pode ir se acostumando a uma solução bem rápida, que consiste em inserir uma letra após o valor numérico, fazendo uma transformação imediata: 0.5F 10.9f 10000.3F
Agora estes mesmos valores são interpretados como float.
Meu Deus! Obrigadoo. Essa de todos os valores lidos ou inseridos serem double é nova para mim.
Amo a apostila caelum, até uma pessoa como eu consegue entender ela kkkkkk.
A k19 é nova para mim, vou dar uma olhada.
Agradeço muitissimo!
L
Luis_Augusto_Santos
Deixa eu esclarecer isso. Todos os valores com ponto flutuante. 123 //inteiro 10.9 //double 124343545454566L //long 10.9F //float
W
Wellingt14
Entendi. Valeu, vai me ajudar muito.
Porque não usar sempre double? Porque o float? kkkk
Sei que tem relação ao espaço, mas já que o java tem esse “problema” em pensar que “tudo” é double, para qualquer valor que pudesse ser real como o salário, deveria ser usado double.
Mas obrigado! Agora posso usar os dois
L
Luis_Augusto_Santos
Olha, por experiência, sugiro utilizar BigDecimal. Mais preciso e melhor que os dois tipos anteriores para a execução de operações com ponto flutuante.
C
C4sh3w1 like
O código correto:
import javax.swing.JOptionPane;
public class ExercUm{
public static void main (String[] args){
floatsalario,salreajustado;salario=Float.parseFloat(JOptionPane.showInputDialog(null,"Informe seu salario"));