Porque da erro?

9 respostas
J

import java.util.Scanner;

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

Double nota1;
	Double nota2;
	Double nota3;
	Double resultado;
	String nomeAluno;
	int contador = 0;
	
	Scanner iso = new Scanner(System.in);
	
	while(contador < 10){
	
	System.out.println("digite o seu nome:");
	nomeAluno = iso.nextLine();
	System.out.println("digite a primeira nota:");
	nota1 = iso.nextDouble();
	System.out.println("digite a segunda nota:");
	nota2 = iso.nextDouble();
	System.out.println("digite a terceira nota:");
	nota3 = iso.nextDouble();
	resultado = nota1 + nota2 + nota3;
	System.out.println(nomeAluno+" sua média é " + resultado / 3);

	contador = contador + 1;
	}
}

}

voçe digita somente a primeira vez o nome, e depois a frase digite nome sai junto com a proxima mensagem, que recebe somente a nota e não mais o nome que é pra ser, porque isso aconteçe, helpeeeee…

9 Respostas

newbcc

Olá,

cara, não ficou claro a sua dúvida. Você gostaria que a mensagem de identificação (nome) seja exibida somente uma vez?

Se for isso, retire de dentro do looping a mensagem de digitar o nome e capturá-lo:

System.out.println("digite o seu nome:");
nomeAluno = iso.nextLine();
while(contador < 10) {

System.out.println("digite a primeira nota:");
nota1 = iso.nextDouble();
System.out.println("digite a segunda nota:");
nota2 = iso.nextDouble();
System.out.println("digite a terceira nota:");
nota3 = iso.nextDouble();
resultado = nota1 + nota2 + nota3;
System.out.println(nomeAluno+" sua média é " + resultado / 3);

contador = contador + 1;
}
dhsouza

Acho que o erro que ele diz é que depois da primeira leitura das 3 notas o programa pula a parte de digitar o nome indo direto para as notas;

jMaT
no caso , o loop estava pulando o nome a partir da 2 vez e ja lendo o valor da nota .
public class Media10alunos {
    public static void main(String[] args) {

Double nota1;
Double nota2;
Double nota3;
Double resultado;
String nomeAluno;
int contador = 0;

Scanner iso = new Scanner(System.in);
Scanner nome = new Scanner(System.in);

while(contador < 10){

    System.out.println("digite o seu nome:");
    nomeAluno = nome.nextLine();
    System.out.println("digite a primeira nota:");
        nota1 = iso.nextDouble();
    System.out.println("digite a segunda nota:");
        nota2 = iso.nextDouble();
    System.out.println("digite a terceira nota:");
        nota3 = iso.nextDouble();
    resultado = nota1 + nota2 + nota3;
    System.out.println(nomeAluno+" sua média é " + resultado / 3);

    contador = contador + 1;
    }
  }
}
celso.martins

Observações:

[list]Pelas convenções da linguagem Java, todas as palavras que compõe os nomes das classes começam com letras maiúsculas, assim: Media10Alunos;[/list]
[list]Utilize as tags code quando for postar codigo, facilita muito o entendimento[/list]
[list]Pense em titulos mais claros. Nesse seu caso seria algo assim: "Por que dá erro durante o input no Scanner", ou algo assim[/list]

Dei uma modificada no seu codigo para não engessar tanto o usuário, mas o pulo do gato é a recriação do Scanner e o reset no fim do while. Acredito que exista outra forma mais simples de resolver esse problema, mas foi o que consegui pensar no momento. Também tenho conhecimentos parcos da classe Scanner, mas está aí:

Abraços

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

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

		List<Double> notas = new ArrayList<Double>();
		String nomeAluno = "";
		Double nota = 0.0;
		
		while ((!nomeAluno.equals("sair"))) {
			Scanner iso = new Scanner(System.in);

			System.out.println("Digite seu nome, ou 'sair' para terminar: ");
			nomeAluno = iso.nextLine();
			
			while (nota != -1) {
				System.out.println("Digite a sua nota ou '-1' para terminar: ");
				nota = iso.nextDouble();
				notas.add(nota);
			}
			
			if (!nomeAluno.equals("sair")){
				Double resultado = acharMedia(notas);
				System.out.println(nomeAluno + " sua média é " + resultado);
			}
			
			iso.reset();
		}
	}

	private static Double acharMedia(List<Double> notas) {
		Double somatorio = 0.0;
		for (Double nota : notas) {
			somatorio += nota;
		}
		return somatorio / notas.size();
	}
}
J

javasouza:
import java.util.Scanner;

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

Double nota1;
	Double nota2;
	Double nota3;
	Double resultado;
	String nomeAluno;
	int contador = 0;
	
	Scanner iso = new Scanner(System.in);
	
	while(contador < 10){
	
	System.out.println("digite o seu nome:");
	nomeAluno = iso.nextLine();
	System.out.println("digite a primeira nota:");
	nota1 = iso.nextDouble();
	System.out.println("digite a segunda nota:");
	nota2 = iso.nextDouble();
	System.out.println("digite a terceira nota:");
	nota3 = iso.nextDouble();
	resultado = nota1 + nota2 + nota3;
	System.out.println(nomeAluno+" sua média é " + resultado / 3);

	contador = contador + 1;
	}
}

}

voçe digita somente a primeira vez o nome, e depois a frase digite nome sai junto com a proxima mensagem, que recebe somente a nota e não mais o nome que é pra ser, porque isso aconteçe, helpeeeee…

o caso é q só grava o nome uma vez, e depois a frase q pede o nome ela apareçe junto com a proxima frase"digite a primeira nota"

drigo.angelo

Troque

por

iso.next();
J

OBRIGADÃO GALERA… VALEU E ESPERO PODER UM DIA AJUDALOS TAMBÉM…

drigo.angelo

edita seu primeiro post e coloca [resolvido] no titulo blz :stuck_out_tongue:

J

beleza, irei tentar melhora-lo…

Criado 10 de março de 2011
Ultima resposta 11 de mar. de 2011
Respostas 9
Participantes 6