Fórum Erro de exceção classe Scanner #589375
30/11/2017
0
Galera, bom dia!
Eu postei um código no URI e está apresentando este erro:
e não é a primeira vez que apresenta erro nesta classe Scanner, alguém sabe o motivo? Segue o código do programa:
Eu postei um código no URI e está apresentando este erro:
Exception in thread "main" java.util.InputMismatch: at java.util.Scanner.throwFor(Scanner.java:914) at java.util.Scanner.next(Scanner.java:1535) at java.util.Scanner.nextInt(Scanner.java:2165) at java.util.Scanner.nextInt(Scanner.java:2124) at Main.main(Main.java:32) Command exited with non-zero status (1)
e não é a primeira vez que apresenta erro nesta classe Scanner, alguém sabe o motivo? Segue o código do programa:
public class Main {
public static void main(String[] args) throws IOException {
Scanner s = new Scanner(System.in);
int PA = 0;
int PB = 0;
double G1 = 0;
double G2 = 0;
int anos = 0;
int T = s.nextInt();
while ((T < 1) || (T > 3000)) {
T = s.nextInt();
}
for (int i = 0; i < T; i++) {
PA = s.nextInt();
while ((PA < 100) || (PA > 1000000)) {
PA = s.nextInt();
}
PB = s.nextInt();
while ((PB < PA) || (PB > 1000000)) {
PB = s.nextInt();
}
G1 = s.nextDouble();
while ((G1 < 0.1) || (G1 > 10.0)) {
G1 = s.nextDouble();
}
G2 = s.nextDouble();
while ((G2 < 0) || (G2 > 10.0)) {
G2 = s.nextDouble();
}
while (PA <= PB) {
anos++;
PA = (int) (PA + PA * (G1/100));
PB = (int) (PB + PB * (G2/100));
if (anos > 100) {
PA = 1;
PB = 0;
}
}
if (anos > 100) {
System.out.println("Mais de 1 seculo.");
} else {
System.out.println(anos + " anos.");
}
anos = 0;
}
}
}Frederico Silva
Curtir tópico
+ 0
Responder
Posts
30/11/2017
Paulo Carvalho
Fala Frederico, tudo bem?
A classe Scanner serve para captar algo digitado na tela do Console. Pelo seu código não percebi nenhum momento você passando essa responsabilidade de digitar alguma informação para o usuário da sua aplicação console. Se você não está recebendo nada digitado na tela, então o retorno da função nextInt() será null. Por isso o erro de InputMismatch. Você captando uma informação do tipo inteiro da tela já resolve essa parada com certeza.
A classe Scanner serve para captar algo digitado na tela do Console. Pelo seu código não percebi nenhum momento você passando essa responsabilidade de digitar alguma informação para o usuário da sua aplicação console. Se você não está recebendo nada digitado na tela, então o retorno da função nextInt() será null. Por isso o erro de InputMismatch. Você captando uma informação do tipo inteiro da tela já resolve essa parada com certeza.
Responder
Gostei + 0
30/11/2017
Frederico Silva
Olá Paulo, boa tarde!
Muito obrigado pelo seu tempo!
Então, ainda fiquei com dúvida, eu pensei que fazendo assim o programa já iria entender que era esperado um valor digitado. O que eu tenho que fazer antes de atribuir o conteúdo lido (s.nextInt()) à variável PA?
Muito obrigado pelo seu tempo!
Então, ainda fiquei com dúvida, eu pensei que fazendo assim
PA = s.nextInt();
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)