Não consigo identificar o erro - Netbeans

package ExercicioQuinze;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

    int numero;
    
    Scanner leitorScanner = new Scanner (System.in);
    
    numero = leitorScanner.nextInt();
    if (numero >= 100 && numero <= 200){
        System.out.println("O numero está no intervalo");
        
    }else {
     System.out.println("O numero não está no intervalo");   
    }
}

}

erro na execução

Task :run
Exception in thread “main” java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at ExercicioQuinze.Main.main(Main.java:14)

Task :run FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ‘:run’.

Process ‘command ‘C:\Program Files\Java\jdk1.8.0_202\bin\java.exe’’ finished with non-zero exit value 1

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 1m 8s
2 actionable tasks: 1 executed, 1 up-to-date

Passei por algo parecido, veja se meu cenário é parecido com o seu.

Eu costumo usar o plugin application do Gradle e executo minha aplicação usando o comando gradle run.

Acontece que quando executamos desta maneira, a System.in é substituido por uma stream vazia e é isso que causa a exceção NoSuchElementException.

Para corrigir basta adicionar isso ao seu build.gradle:

run {
  standardInput = System.in
}

Olha como ficou o meu:

plugins {
  id 'application'
}

application {
  mainClass = 'Main'
}

run {
  standardInput = System.in
}

Outro jeito, se vc não estiver usando o plugin application, seria adicionar o bloco abaixo ao invés do bloco run que sugeri acima:

tasks.withType(JavaExec) {
  standardInput = System.in
}

Ficaria assim:

plugins {
  id 'application'
}

application {
  mainClass = 'Main'
}

tasks.withType(JavaExec) {
  standardInput = System.in
}

Descobri a solução através desta pergunda: Console application with Java and gradle - Stack Overflow

E também pela documentação: JavaExec - Gradle DSL Version 7.4.2

Obrigada pela dica, vou verificar … ainda to aprendendo

Tipos primitivos não podem ser inicializados sem valor, pra resolver você pode fazer da segunte forma
int numero = 0;
ou
Integer numero;

A variável foi inicializada na segunda instrução após a declaração.
O problema era a configuração do Gradle.
:wink:

1 curtida