Int is out of range

Galera boa tarde,

Estou iniciando os estudos em Java e estou tendo um problema com uma variável int,
a IDE esta informando o seguinte: “The literal 08 of type int is out of range”.
Quando eu tiro o zero o código roda normal…
1ª parte:

package classe;

public class Data {
	int dia;
	int mes;
	int ano;
	
	String obterDataFormatada() {
		return String.format("%d/%d/%d", dia, mes, ano);
	}

}

2ª parte:

package classe;

public class DataTeste {
	public static void main(String[] args) {
	Data d1 = new Data();
	d1.dia = 05;
	d1.mes = 07;
	d1.ano = 2022;
		
	var d2 = new Data();
	d2.dia = 04;
	d2.mes = 08;
	d2.ano = 2022;
	
	String data1 = d1.obterDataFormatada();
	String data2 = d2.obterDataFormatada();
	
	System.out.println(d1);
	System.out.println(d2);
	}

}

O erro acontece na linha " d2.mes = 08; "

Desde já agradeço a ajuda!!

Tipos numéricos não possuem zero a esquerda.
Para o Java, quando você escreve um literal numérico começando com zero, ele entende que aquele é um número em base octal, por isso da erro ao digitar 08, a base octal só possui os algarismos do 0 ao 7.
Então no seu caso, é só remover os zeros à esquerda.

5 curtidas

Conforme descrito na especificação da linguagem, quando um literal numérico começa com zero, ele é interpretado como um número na base 8 (ou seja, somente dígitos de 0 a 7 são válidos). Por isso 07 e 04 funcionam por coincidência, já que eles correspondem ao mesmos valores na base 10.

Sem o zero no início, o número é interpretado na base 10, e aí funciona da forma “esperada”.

5 curtidas