Ir ao conteúdo
  • Cadastre-se

Programa pula instrução no loop


Ir à solução Resolvido por Danilo Aguillar,

Posts recomendados

Olá, pessoal,


Estou com um pequeno problema num programa Java. Comecei a aprender matriz e fiz um código para inserir dados de alunos, receber as notas, calcular a média e retornar aprovado ou reprovado. Está tudo funcionando corretamente, o único problema é que, quando o loop volta para pedir o nome do segundo aluno, a execução ignora a entrada de dados e parte direto para a entrada da nota. Não consegui descobrir qual o problema neste código. Alguém poderia, por gentileza, me ajudar?


Segue o código:



package Aulas;

import java.util.Scanner;

public class Aula35 {
public static void main(String[] args){

String[] alunos = new String[2];
double[][] notas = new double[2][4];
double media;
double soma = 0;

Scanner input = new Scanner(System.in);

for(int i = 0; i < alunos.length; ++i){
System.out.println("Informe o nome do " + (i + 1) + "º aluno: ");
alunos[i] = input.nextLine();
for(int j = 0; j < 4; ++j){
System.out.println("Informe a " + (j + 1) + "ª nota de " + alunos[i] + ": ");
notas[i][j] = input.nextDouble();
soma += notas[i][j];
}

media = soma / 4;
soma = 0;

if(media >= 6){
System.out.println(alunos[i] + " foi aprovado com a nota " + media + "\n");
}else{
System.out.println(alunos[i] + " foi reprovado com a nota " + media + "\n");
}
}

}
}

Eu sei que há maneiras melhores de fazer este código, mas como foi o primeiro que fiz, gostaria apenas de uma solução para esse problema.


Muito obrigado!


Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Boa noite.

Tem algo errado com o uso desse código: alunos = input.nextLine();

 

Como eu não me dou bem com ele mesmo vou deixar um aqui funcionando, com o uso do JOptionPane. Só mudei a entrada de dados que é por tela.

package Aulas;import javax.swing.JOptionPane;public class Aula35b {    public static void main(String[] args){                String[] alunos = new String[2];        double[][] notas = new double[2][4];        double media;        double soma = 0;                           for(int i = 0; i < alunos.length; ++i){         	alunos[i] = JOptionPane.showInputDialog(null, "Informe o nome do " + (i + 1) + "º aluno: ");            for(int j = 0; j < 4; ++j){            	notas[i][j] = Double.parseDouble(JOptionPane.showInputDialog(null, "Informe a " + (j + 1) + "ª nota de " + alunos[i] + ": "));                soma += notas[i][j];            }                        media = soma / 4;            soma = 0;                        if(media >= 6){                System.out.println(alunos[i] + " foi aprovado com a nota " + media + "\n");            }else{                System.out.println(alunos[i] + " foi reprovado com a nota " + media + "\n");            }        }          }}
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Muito obrigado :D.

 

Eu encontrei o problema, declarei o "Scanner input = new Scanner(System.in);" dentro do laço e problema resolvido.

 

Mas muito obrigado pela sua ajuda, já deu uma outra forma de resolver :D.

 

Vi que tinha alguma coisa a ver com ele, mas como não uso essa biblioteca nem percebi onde era.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...