Parser de long pata integer

Olá
Pessoal
Tenho duas variaveis uma do tipo long e outra do tipo Integer gostaria de fazer um parser de long para integer como faço?

long v_valor_log = 122222;
int v_valor_integer = 0;

Grato

uma maneira:

try{
    Long n = 2342342334872364782l;
    Integer n1= Integer.valueOf(n.toString());
    System.out.println(n1);
}catch (Exception e) {
    System.out.println("Capacidade do Integer estourou.");
}
1 curtida

Olá marcosharbs

Estou tendo esse erro ao tentar fazer da forma como vc disse:
Cannot invoke toString() on the primitive type long

Segue meu codigo:


 long v_valor_log = 222222888;
			       Integer v_valor_integer = 0;
				try{   
					v_valor_integer = Integer.valueOf(v_valor_log.toString());   
  
				}catch (Exception e) {   
				    System.out.println("Capacidade do Integer estourou.");   
				}  

Utilize Long com L maiúsculo

o long com l minúsculo é do tipo primitivo o método toString() é da classe Object do java a qual todos os objetos decendem direta ou indiretamente
portando usando o long (tipo primitivo) vc realmente não terá esse método, mas se vc usar um Long vc terá.

valeu marcosharbs funfou!!!

[quote=Silva03]Olá marcosharbs

Estou tendo esse erro ao tentar fazer da forma como vc disse:
Cannot invoke toString() on the primitive type long

Segue meu codigo:


 long v_valor_log = 222222888;
			       Integer v_valor_integer = 0;
				try{   
					v_valor_integer = Integer.valueOf(v_valor_log.toString());   
  
				}catch (Exception e) {   
				    System.out.println("Capacidade do Integer estourou.");   
				}  
			[/quote]

Olá Amigo

Tem que declarar como Objeto Integer ou Long

int e long minusculos são tipos primitivos em java

Por isso o toString() não funciona.

Esse artigo http://www.criarweb.com/artigos/630.php Explica bem direitinho :slight_smile:

de nada
=D

[code] Integer i = Integer.valueOf(123456);
Long l = Long.valueOf(1234567890);

	/*
	 *  'Converte' de Long para Integer.
	 *  Vale lembrar da perda da precisão
	 *  ao realizar a conversão... Afinal
	 *  O brasil não cabe dentro de São Paulo
	 **/
	Integer i2 = Integer.valueOf((int) l.longValue());
	
	//Sem problemas
	Long l2 = Long.valueOf(i.longValue());

[/code]

Espero ter ajudado!

Eu estou lendo certo? Você estão mandando ele criar objetos, só para converter o valor de uma variável long em int? Estou me baseando no exemplo, pois embora ele tenha falado em Integer, a variável dele no exemplo está declarada como int.

Para isso, basta um simples typecast:

long var1 = 1827182761L; long var2 = (int) var1;

Só tome cuidado que, como o long é maior que o int, pode haver perda de informação. Afinal, o número do long pode ser maior do que o int é capaz de suportar. Nesse caso, o java não dará qualquer tipo de erro. O que ele fará é simplesmente eliminar os bits da parte mais significativa do dado.

[quote=ViniGodoy]Eu estou lendo certo? Você estão mandando ele criar objetos, só para converter o valor de uma variável long em int? Estou me baseando no exemplo, pois embora ele tenha falado em Integer, a variável dele no exemplo está declarada como int.

Para isso, basta um simples typecast:

long var1 = 1827182761L; long var2 = (int) var1;

Só tome cuidado que, como o long é maior que o int, pode haver perda de informação. Afinal, o número do long pode ser maior do que o int é capaz de suportar. Nesse caso, o java não dará qualquer tipo de erro. O que ele fará é simplesmente eliminar os bits da parte mais significativa do dado.[/quote]

Sim Vini, vc esta certo, surgiu uma certa confusão sobre o que ele realmente quer!
Deixando um pouco mais claro… no seu mesmo exemplo…

long var1 = 1827182761L; int var2 = (int) var1;

Ajudou aqui, obrigado !

Eu faço assim para números abaixo de 2 bilhões,
ou adaptando pode ficar especifico pro valor máximo do Integer.

		Integer NUMconvertido;
		if (longOriginal > (long) 2000000000){
			NUMconvertido = (int)2000000000;
		}else{
		String converteNUM = String.valueOf(longOriginal);
		NUMconvertido = Integer.valueOf(converteNUM);
		}