Porque eu não posso fazer isso:
int num = JOptionPane.showInputDialog(null, " Entre com o numero: ");
porque só da pra fazer isso quando a variável for String?
Porque eu não posso fazer isso:
int num = JOptionPane.showInputDialog(null, " Entre com o numero: ");
porque só da pra fazer isso quando a variável for String?
String numero;
numero = JOptionPane.showInputDialog(null, " Entre com o numero: ");
int num = Integer.parseInt(numero); // Converte String em Int
JOptionPane.showMessageDialog(null, num + 3);// Soma o valor do usuário por 3
Você precisa declarar uma String receber o valor do usuário na String e depois converter essa String em um Int.
Pra converter : int num = Integer.parseInt(numero);
Até mais!
Opa m-bax
[quote]
int num = JOptionPane.showInputDialog(null, " Entre com o numero: ");
[/quote]
Voce não pode fazer isso, pq a especificação para o o componente JOptionPane foi definida para ter um retorno String.
Tanto que, se o usuário não colocar valor, vai retonar uma String vazia, mas sempre uma String.
Os únicos casos em que vc tem um retorno int são as caixas de confirmação, e os valores possíveis são:
* YES_OPTION
* NO_OPTION
* CANCEL_OPTION
* OK_OPTION
* CLOSED_OPTION
O q vc pode fazer é converter direto.
Seria a forma mais enxuta do código acima:
int num = Integer.valueOf(JOptionPane.showInputDialog(null, " Entre com o numero: "));
O problema, é se o usuário digitar algo que não seja numero, inclusive se ele não digitar nada.
Para ajudar, dá uma olhada neste tópico abaixo:
http://www.guj.com.br/posts/list/23607.java
Abraços
Para converter uma String para um int, use o método Integer.parseInt, não o método Integer.valueOf.
O Integer.valueOf irá:
Note que no fundo, você só precisava do primeiro passo. Todos os outros foram processamento jogado fora.
Valeu viny
Porque vc tem que sempre converter uma String para Integer.
um exemplo:
int num = Integer.parseInt(JOptionPane.showInputDialog(“Digite o numero”));
Ai dentro da aspas voce pode digitar o que vc quiser para o usuario
[quote=fabianacastelao]Porque vc tem que sempre converter uma String para Integer.
um exemplo:
int num = Integer.parseInt(JOptionPane.showInputDialog(null, “Digite o numero”));
Ai dentro da aspas voce pode digitar o que vc quiser para o usuario.
Desculpe o certo e esse e nao o de cima…
E você ainda pode fazer assim.
try{
int num = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o numero"));
} catch( NumberFormatException e ){
JOptionPane.showMessageDialog(null,"Número Inválido");
}
caso o usuário coloque uma letra ou qualquer coisa que torne o número inválido o programa não encerrará e ainda irá informar ao usuário que ele digitou um número não válido.
[quote=SergioFilho]E você ainda pode fazer assim.
try{
int num = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o numero"));
} catch( NumberFormatException e ){
JOptionPane.showMessageDialog(null,"Número Inválido");
}
caso o usuário coloque uma letra ou qualquer coisa que torne o número inválido o programa não encerrará e ainda irá informar ao usuário que ele digitou um número não válido.[/quote]
2 perguntas! é necessário sempre especificar null para JOptionPane.showInputDialog?
outra coisa, no caso de trabalhar com números é utilizado (NumberFormatException e) no catch, e se for ao contrário? para String, e o fulano não pode colocar valor numérico?
enfatizando:
tudo o q digitar é string. se não quiser q seja número, então vc vai ter utilizar uma estratégia para impedir isso.
abraços
Uma pergunta, a classe JOptionPane não tem nenhum método que aceite direto a entrada de inteiros ou outro tipo numérico?
Ou alguma outra classe então? Porque toda a vida tem que criar uma variável extra para cada atributo e fazer a conversão. Não tem outro jeito? Mais direto?
[quote=Alberto.S]Uma pergunta, a classe JOptionPane não tem nenhum método que aceite direto a entrada de inteiros ou outro tipo numérico?
Ou alguma outra classe então? Porque toda a vida tem que criar uma variável extra para cada atributo e fazer a conversão. Não tem outro jeito? Mais direto?[/quote]
Não necessariamente terá que criar uma variável extra
faça como nosso amigo Sergio Filho
int num = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o numero"));
[quote=alansystem][quote=Alberto.S]Uma pergunta, a classe JOptionPane não tem nenhum método que aceite direto a entrada de inteiros ou outro tipo numérico?
Ou alguma outra classe então? Porque toda a vida tem que criar uma variável extra para cada atributo e fazer a conversão. Não tem outro jeito? Mais direto?[/quote]
Não necessariamente terá que criar uma variável extra
faça como nosso amigo Sergio Filho
int num = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o numero"));
Sim, está sendo colocado tudo em uma linha, mas no fim o processo é o mesmo. Me refiro a algo como:
meuInteiro = Classe.metodo("Digite um inteiro: ");
Talvez eu que não esteja entendendo, mas o que você está dizendo, pra mim é a mesma coisa! aguardar alguém responder sua questão! 8)
Não está armazenando uma String e um Int.
A String já é o retorno do JOptionPane. Então, não tem jeito.
O que é diferente:
int num = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o numero"));
//acima vc tem uma variável declarada (num) e uma implícita, que é o próprio retorno do JoptionPane. (total 2)
//====================
String userAnswer = JOptionPane.showInputDialog(null, "Digite o numero");
int num = Integer.parseInt(userAnswer);
//nesse outro caso, vc tem sim + uma declarada, que é a userAnswer (total 3).
do meu ponto de vista, fazer direto é o melhor.
Assim: essa é a limitação da linguagem: o JoptionPane retorna String.
Porém, Java é mto extendível. Caso vc necessite que seja direto pra int, vc pode desenvolver um complemento pra tal.
Muita gente desenvolve complementos, isso é fácil de se ver por aí.
Blz? deus abençoe
\o/
alansystem, outra coisa que eu quero saber é se isso está de acordo com as blueprints de Java. Para código reutilizável?
Porque o valor passa pela JOptionPane mas não fica armazenada em uma variável antes de ser convertida para inteiro. Está correto isso?
Fala Alberto
Sim, isso é correto. Mas é meio estranho, não?! Principalmente pra quem tá começando.
A questão é a seguinte: vc vai precisar reutilizar o valor dessa String em algum outro ponto?
Ainda assim: cada um faz como quer, dependendo do nível de abastração da linguagem e da necessidade encontrada!
Blz? Abraços
\o/
int num = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o numero"));
Interessante!
E sobre a questão do Alberto.S, talvez ele esteja tentando perguntar se não existe algum método de alguma classe gráfica que aceite e armazene números, sem precisar dessa conversão.
Opa
Existe o JFormattedTextField.
Através dele vc pode limitar o que vai ser digitado.
So que aqui, não se pode colocar o JFormattedTextField dentro do JOptionPane.
Pra utilizar, vc vai ter que fazer o seu proprio JFrame ou JDialog e, dentro dele, colocar o JFormattedTextField p receber o valor passado pelo usuário.
Blz?
Abraços \o/