o que há de errado na minha estrutura? ou tudo? lembrando que estou fazendo testes, me baseando em C
public class Teste {
public static void main(String[] args) {
int a=11;
Integer.parseInt(a);
int c=a+a;
System.out.println(c);
}
}
o que há de errado na minha estrutura? ou tudo? lembrando que estou fazendo testes, me baseando em C
public class Teste {
public static void main(String[] args) {
int a=11;
Integer.parseInt(a);
int c=a+a;
System.out.println(c);
}
}
Qual é o erro que dá?
No teu caso a variável ‘a’ já é um inteiro você tá transformando um inteiro em um inteiro… E o parâmetro passado para Integer.parseInt(a); precisa ser uma String e não um inteiro.
Substitua por:
public class Teste {
public static void main(String[] args) {
int a = Integer.parseInt("11");
int c = a+a;
System.out.println(c);
}
}
ou
public class Teste {
public static void main(String[] args) {
String b = "11";
int a = Integer.parseInt(b);
int c = a+a;
System.out.println(c);
}
}
ou
public class Teste {
public static void main(String[] args) {
String a = "11";
int c = Integer.parseInt(a) + Integer.parseInt(a);
System.out.println(c);
}
}
[quote=alansystem]o que há de errado na minha estrutura? ou tudo? lembrando que estou fazendo testes, me baseando em C
public class Teste {
public static void main(String[] args) {
int a=11;
Integer.parseInt(a);
int c=a+a;
System.out.println(c);
}
}
[/quote]
Você não tem uma String, a variavel “a” ja é um Int
[EDIT] Você pode fazer um dos exemplos que nosso amigo Frantic Avenger usou, nele você possui uma String que precisa ser convertida para um Int.
Se for um Double (um número quebrado, exemplo 15,3) você poderia usar:
public class Teste {
public static void main(String[] args) {
double a = Double.parseDouble("11");
double c = a+a;
System.out.println(c);
}
}
Vlw era isso mesmo! esse negócio de converter me dá um nó na cabeça, tão acostumado com PHP que não converte!
afinal o porque JAVA tem esse negócio de conversão já que é uma linguagem tão nova comparada com C?
Por que Java é fortemente tipado.
Essa característica está mais relacionado a uma decisão de projeto, não tanto ao “poder” da linguagem. Há vantagens de desvantagens de optar por ser fortemente ou fracamente tipado, e uma não representa uma evolução da outra.
Mais informações:
sim, entendo perfeitamente o fato de ter algumas diferenças sim, o que eu não entendo é porque a complicação de converter! ao invés de facilitar no processo!
Bom por vias das dúvidas estude Ruby:
fonte: http://celodemelo.wordpress.com/2008/02/28/linguagem-fortemente-tipada-strong-typing/
Perfeito!
Fiz uma estrutura que deveria receber um valor inteiro, se eu colocar o meu nome por exemplo vai gerar um erro!
neste caso trabalho com try catch?
import javax.swing.JOptionPane;
public class Teste {
public static void main(String[] args) {
String a = JOptionPane.showInputDialog("Digite um número ");
int c = Integer.parseInt(a);
int b=c+c;
System.out.println(b);
}
}
Por que quando você “facilita o processo” você pode fazer com que o programador tenha erros inesperados. Por exemplo, pode-se perder precisão ao converter de um double para um int. O programador pode ter atribuido uma String a um int por um infeliz acidente, ao invés de querer ter feito isso de propósito.
O grande objetivo de tipagem forte é garantir segurança nas operações, o que é uma característica bastante desejável em linguagens que precisem ser usadas em ambientes científicos ou mais críticos.
Esse artigo sobre o assunto também é muito bom: http://www.bitabit.eng.br/2009/11/09/a-natureza-de-uma-linguagem-de-programacao/
[quote=alansystem]Perfeito!
Fiz uma estrutura que deveria receber um valor inteiro, se eu colocar o meu nome por exemplo vai gerar um erro!
neste caso trabalho com try catch?[/quote]
Allan, quando for postar códigos, use a tag code:
[code]
Seu código aqui
[/code]
Sim, para testar se a conversão foi ou não bem sucedida, use try catch:
public class Teste {
public static void main(String[] args) {
String a = JOptionPane.showInputDialog("Digite um número ");
try {
int c = Integer.parseInt(a);
int b=c+c;
System.out.println(b);
} catch (NumberFormatException e) {
System.out.println("Não foi possível realizar a operação pois o valor informado não era um número inteiro.");
}
}
}
java.lang.Error: Unresolved compilation problem:
The method parseInt(String) in the type Integer is not applicable for the arguments (int)[/b]
[quote=alansystem]o que há de errado na minha estrutura? ou tudo? lembrando que estou fazendo testes, me baseando em C
[code]public class Teste {
public static void main(String[] args) {
int a=11;
Integer.parseInt(a);
int c=a+a;
System.out.println(c);
}
}[/code][/quote]
O único erro está em Integer.parseInt(a) que além de aceitar somente Strings não está sendo atribuído a nenhuma variável.
[quote=alansystem]Perfeito!
Fiz uma estrutura que deveria receber um valor inteiro, se eu colocar o meu nome por exemplo vai gerar um erro!
neste caso trabalho com try catch?
import javax.swing.JOptionPane;
public class Teste {
public static void main(String[] args) {
String a = JOptionPane.showInputDialog("Digite um número ");
int c = Integer.parseInt(a);
int b=c+c;
System.out.println(b);
}
} [/quote]
Sim, useo o try catch, para exibir uma mensagem, por exemplo “Caracter Invalido”
Perfeito ViniGodoy
try -> se o bloco abaixo não receber o valor
catch -> então exiba o erro
é isso né a leitura?
outra coisa percebi que você colocou o try depois do JOptionPane, tanto faz, ou é boa prática? pq fiz o teste e também funciona
vlw a ajuda galera!
Viny, eu usei o Try antes do JOptionPane, então o JOptionPanew, está dentro do bloco do try, ficou assim:
[code]while (true) {
try {
String op = JOptionPane.showInputDialog(null, "Digite um número INTEIRO : ", "Exercicio 10 da Lista III",
JOptionPane.WARNING_MESSAGE);
if (op == null) {
break;[/code]
Tem algum problema?
[quote=alansystem]Perfeito ViniGodoy
try -> se o bloco abaixo não receber o valor
catch -> então exiba o erro
é isso né a leitura?
outra coisa percebi que você colocou o try depois do JOptionPane, tanto faz, ou é boa prática? pq fiz o teste e também funciona
vlw a ajuda galera![/quote]
O try pede para ele “tentar” fazer alguma operação perigosa. Se ela falhar, o erro é capturado no catch. Esse link é um ótimo material sobre o assunto:
Coloquei o try abaixo do JOptionPane pq o showInputDialog nunca dará erro. A nossa primeira operação de risco é o parseInt. Até poderia ser dentro, sem problemas, mas eu geralmente prefiro fazer assim, pois estou dizendo explicitamente onde está o meu código crítico.
O resto do código fica dentro do try pois não queremos executar nenhum daquelas comandos caso o parseInt falhe.
Então o erro só aparece porque o bloco do try executou?
o try serve para se o bloco falhar não executar? ou falei baboseira?
Entre o bloco [size=18]try [/size] você coloca onde está perigoso, onde pode ocorrer o erro, entre o [size=18]catch[/size] a mensagem.
Pelo que eu entendi… :roll:
Ou eu falei besteira? :roll: