Converter string em int

22 respostas
A
String a = "10";
		String.valueOf(a);
		
		int valor = a;

pq não vai?

22 Respostas

Andre_Brito

Cara, veja o que você está fazendo… Declara uma String e dá um valueOf nela (ou seja, não faz nada). Aí tenta colocar num inteiro uma String! Você pode tentar o seguinte:

  • Declara a String e colocar um valor nela (como a primeira linha);
  • Usar o método Integer.parseInt(string) dentro de um try catch. Se não cair no catch, é porque é inteiro. Se cair, é porque é qualquer coisa, menos um número inteiro.
A
try{
String a = "10";
		int c = 0;
	
	}catch (q exceção?){
   int i = Integer.parseInt(a);  
	   int b = a + c;

não funciona ainda

não entendí a parte do try / catch

gergon

O mais certo seria:

String a = "10";
try{
int valor = Integer.parseInt(a);
}
catch(NumberFormatException e)
{
//Caso naum seja inteiro executa o que estiver neste bloco
}
Andre_Brito

É a NumberFormatException.

andredecotia,
Leia com atenção ao que eu escrevi:

try {

Integer.parseInt(a);

System.out.println(Se não cair no catch, é porque é inteiro.);

} catch(NumberFormatException nfe) {

System.out.println(Se cair, é porque é qualquer coisa, menos um número inteiro.);

}[/code]

Melhor que isso,  2 disso.
gergon

Sim!! esta mesma.
Valeu

gergon

Agora ficou mais explicado

A

mas eu consigo sobre tipo a + b? ex: resultado 10… ??? é possível eu fazer uma operação matemática com essa string convertida pra int?

gergon

Sim
Voce pode fazer assim

a = "5";
b = "10";

int a2 = Integer.parseInt(a);  
int b2 = Integer.parseInt(b);  

System.out.println("resulta a2 + b2 :"a2+b2);
R

estava aqui pensando, achei que antes do string.valueof era só atribuir uma variavel a isto... mas nao foi tão facil. montei um código.
mas surge esta questão de contexto estatico, por incrivel ainda tenho dúvidas nisto, então segue o código, que está errado, mas o que surge disto.

*
 * @author raghyjose
 */
public class Converte {

    String a = "10";
    int b = 0;

    public static void converte() {
        int b3 = Integer.parseInt(a);
        System.out.println("valor de b=" + b3);
    }
    int b2 = Integer.parseInt(a);

    public static void main(String[] args) {
        converte();

    //System.out.println("valor de b="+b3);
    }
}
R

agora deu, mas nao com o valueOF, tambem nao sei o porque.

public class Converte {

 public static void converte() {
 String a = "10";
 int b = Integer.parseInt(a);  
 // int b = String.valueOf(a);  
 System.out.println("valor de b=" + b);
 }
 public static void main(String[] args) {
 String a = "10";
 int b = Integer.parseInt(a);  
 //  int b = String.valueOf(a);  
 System.out.println("valor de b=" + b);    
 converte();
 }
}
gergon

Se voce quiser cria metodos para retornar a conversao da certo assim:

public class converter{

//retorna int
public static int getConversao(String a){
int b = Integer.parseInt(a);
return b;
}

public static void main(String []args){

String a = "10";

System.out.println("valor convertido: "getConversao(a));//
}
}
Hebert_Coelho
raghy:
agora deu, mas nao com o valueOF, tambem nao sei o porque.
public class Converte {

 public static void converte() {
 String a = "10";
 int b = Integer.parseInt(a);  
 // int b = String.valueOf(a);  
 System.out.println("valor de b=" + b);
 }
 public static void main(String[] args) {
 String a = "10";
 int b = Integer.parseInt(a);  
 //  int b = String.valueOf(a);  
 System.out.println("valor de b=" + b);    
 converte();
 }
}
Cara não funciona pq o b que vc declarou é um int.

Olha oq a API do String fala sobre o método que vc chamou:

valueOf

public static String valueOf(int i)

Returns the string representation of the int argument.


Vc simplesmente estava tentando jogar uma String dentro de um int.

Hebert_Coelho

Uma vez que vc converteu String para int, ele é int.

Uma coisa que vc não vai conseguir fazer é somar duas Strings:

String x = "ab"; String y = "cd"; System.out.println(x+y);Resultado: abcd

Já quando vc faz: o Integer.valueOf() vc está convertendo o objeto String para Inteiro. Funciona qualquer tipo de função aritimética.
String.valueOf() retorna uma string representando o valor que vc passou.
E se quizer jogar de Integer para String basta fazer um Integer.toString();

R

engraçado que o Integer.parseInt, tambem nao converte, pois a operação nao funciona.

public static void converte() {
 String a = "10";
 int b = Integer.parseInt(a);  
 // int b = String.valueOf(a);  
 System.out.println("valor de b=" + b);
 }
 public static void main(String[] args) {
 String a = "10";
 int b = Integer.parseInt(a);  
 //int b4 = String.valueOf(a);  
 System.out.println("valor de b=" + b); 
 converte(); 
 
 
 //mais testes
 String x=String.valueOf(a);
 System.out.println("valor de x=" + x);  
 System.out.println("soma=" + x+12); 
 
 System.out.println("soma=" + b+12); 
 }
}

init:
deps-jar:
Compiling 1 source file to C:\Documents and Settings\raghyjose\TesteThreadETc\build\classes
compile-single:
run-single:
valor de b=10
valor de b=10
valor de x=10
soma=1012
soma=1012
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)
Hebert_Coelho

Em qual parte não funciona?

Tem tanto código perdido ae q ta difícil até de olhar! :shock:

gergon

gergon

tenta criar uma variavel int para armazenar as somas

R

era só conseguir converter e somar. mas nao deu. nao é muito importante, mas vou ver o que faço.

é assim deu…

System.out.println("soma=" + b+12); 
  int soma2=b+12;
  
  System.out.println("soma=" + soma2); 
 }
}

mas interessante porque nao soma diretamente o b+12, se colocassemos 5+12 somaria…
na verdade também nao deu… deu 512… estranho não?

System.out.println("soma=" + 5+12);

igual a 512

???

R

System.out.println(“soma=” + (5+12));

assim deu 17

Z111

Questão de precedência das operações. Coloque sempre a ordem das operações envolvida em parenteses.

System.out.println("soma=" + (b+12));
gergon

Deste modo voce esta fazer uma catentacao ou seja vc esta juntando 5 com 12

System.out.println("soma=" + 5+12);
A

muito obrigado a cada post ajudou e muito pra mim…

abraço,
:shock: :smiley: :-o
André AS

Criado 21 de julho de 2010
Ultima resposta 21 de jul. de 2010
Respostas 22
Participantes 6