[RESOLVIDO]Erro Scanner

Bom pessoal , estava fazendo um exercicio simples de java para praticar sitnaxe um pouco , iria fazer um programa que fosse lendo as idades e tiraria a média depois.
Comecei montando o Scanner , depois iria colocar dentro de um Loop e por fim escrever a média.
Porém tenho mania de ir rodando o programa no Eclipse para ver se vai rodar.
Mas esta dando um erro ,mesmo nesta parte simples inicial
Segue o código:

[code]import java.util.Scanner;

public class Testerr {

public static void main(String[] args) {
		
		Scanner scn = new Scanner(System.in);
		int x = 0;
		scn.nextInt(x);
	
	}
}

[/code]

Segue o Erro

Exception in thread “main” java.util.regex.PatternSyntaxException: Unclosed character class near index 525
(([-+]?(((((?i)[]|\p{javaDigit})++)|(\p{javaDigit}&&[^0]?((?i)[]|\p{javaDigit})?(,((?i)[]|\p{javaDigit})((?i)[]|\p{javaDigit})((?i)[]|\p{javaDigit}))+)))))|(((((?i)[]|\p{javaDigit})++)|(\p{javaDigit}&&[^0]?((?i)[]|\p{javaDigit})?(,((?i)[]|\p{javaDigit})((?i)[]|\p{javaDigit})((?i)[]|\p{javaDigit}))+)))|(\Q-\E((((?i)[]|\p{javaDigit})++)|(\p{javaDigit}&&[^0]?((?i)[]|\p{javaDigit})?(,((?i)[]|\p{javaDigit})((?i)[]|\p{javaDigit})((?i)[]|\p{javaDigit}))+)))
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.clazz(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.group0(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.group0(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.group0(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.group0(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.group0(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.group0(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.Scanner$1.create(Unknown Source)
at java.util.Scanner$1.create(Unknown Source)
at sun.misc.LRUCache.forName(Unknown Source)
at java.util.Scanner.integerPattern(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Testerr.main(Testerr.java:12)

Acabo de perceber que foi erro de sintaxe.

segue o correto para caso alguem ache este tópico via search.

Scanner scn = new Scanner(System.in); int x = scn.nextInt();

Cara,

tira o int do método, deixa apenas nextInt.
E outra, ao que eu sei, o ideal é usar o método nextLine().

Da uma lida na API Scanner que é importante.
Abraços.

[quote=nel]Cara,

tira o int do método, deixa apenas nextInt.
E outra, ao que eu sei, o ideal é usar o método nextLine().

Da uma lida na API Scanner que é importante.
Abraços.[/quote]
Então amigo , mas se eu usar Next Line ele vai entender como numero?Ou seja poderei armazenar e trabalhar com ele?

[quote=CaioIncau][quote=nel]Cara,

tira o int do método, deixa apenas nextInt.
E outra, ao que eu sei, o ideal é usar o método nextLine().

Da uma lida na API Scanner que é importante.
Abraços.[/quote]
Então amigo , mas se eu usar Next Line ele vai entender como numero?Ou seja poderei armazenar e trabalhar com ele?[/quote]

Ele vai ler o conteúdo da sua linha digitada e não vai se perder, ao que eu sei, os outros métodos, correm o risco de não identificar corretamente o fim da linha e confundir os valores, se perder, enquanto o nextLine() não sofre desse problema.

Você fazer algo assim:

[code]public class Testerr {

public static void main(String[] args) {   
           
        Scanner scn = new Scanner(System.in);   
        String value = scn.nextLine();
        if(value.matches("\\d+"))
             System.out.println("Contém somente números...");           
    }   
}  [/code]

Uma validação simples de conteúdo, de forma que podes pegar esse valor e transformar em um inteiro sem que lhe gere uma NumberFormatException.

 if(value.matches("\\d+")) 

Poderia explicar com mais detalhes esta linha?
Não conheço este metodo .matches, e nem o inserido dentro do parenteses ("\d+")

[quote=CaioIncau] if(value.matches("\\d+"))
Poderia explicar com mais detalhes esta linha?
Não conheço este metodo .matches, e nem o inserido dentro do parenteses ("\d+")[/quote]

Este método faz a aplicação de regex. É o mesmo regex que:

matches("[0-9]+");

O método matches retorna um booleano indicando se o valor é válido dada a expressão. Não vou entrar em detalhes, porque não é o objetivo deste tópico. Mas o que não falta na net são exemplos de aplicação de regex em java.

Forte abraço!

Outra forma:

try { int valor = Integer.parseInt(scanner.nextLine()); } catch (NumberFormatException e) { System.out.println("Ei rapaz, informe somente números!"); }

Costuma a ser mais rápido que as regex.

[quote=ViniGodoy]Outra forma:

try { int valor = Integer.parseInt(scanner.nextLine()); } catch (NumberFormatException e) { System.out.println("Ei rapaz, informe somente números!"); }

Costuma a ser mais rápido que as regex.[/quote]
A legal vlw Vini, Try e Catch eu sei usar legal, iria usar neste caso.