AJUDEM vale a nota da primeira prova

Faça um programa para corrigir provas de múltipla escolha. Cada prova tem 10 questões e
cada questão vale 1 ponto. O primeiro conjunto de dados a ser lido é o gabarito da prova. Os outros dados
são os números dos alunos e as respostas que deram às questões, o programa para quando for digitado um
valor negativo. Calcule e mostre:
a) o número e a nota de cada aluno
b) a percentagem de aprovação, sabendo-se que a nota mínima é 6
c) o nome e a nota do aluno que tirou a maior nota

[code]import java.util.Scanner;

public class ex58 {

public static void main(String[] args) {
	// contadores
	int x,y;
	// controle de equaçoes
	int qtd; //quantidade de alunos
	int resp; //resposta para comparar com o gabarito
	int acertos;//quantidade de acertos
	int maior=0;//maior nota
	String mnome=" ";//nome do aluno q tirou a maior nota
	int not=0;//nota do aluno
	int apr=0;// quantidade de aprovados
	int pApr;//porcentagem de aprovados

	int gabarito[] = new int[10];
	String nome[] = new String[10];
	int nota[]=new int [10];
	Scanner s = new Scanner(System.in);
	System.out.println(":::Gabarito:::".toUpperCase());
	for (x = 0; x < 10; x++) {
		System.out.print((x+1)+ "ª questao :" );
		gabarito[x] = s.nextInt();
	}
	System.out.println("Quantidade de alunos");
	qtd = s.nextInt();
	System.out.println(":::RESPOSTAS DAS PROVAS:::\n");
	//quantidade de alunos
	for(y=0;y<qtd;y++){
		System.out.print("Aluno: ");
		nome[x]=s.next();
		acertos=0;
		//quantidade de questoes
		for (x = 0; x < 10; x++) {
			System.out.print((x+1)+ "ª questao :" );
			resp=s.nextInt();
			if (resp==gabarito[x]){
				acertos+=1;
			}

			not=acertos;
		}
		if(not>=6){
			apr+=1;
		}
		if (not>maior){
			mnome=nome[x];
			maior=not;
		}
	}
	System.out.println(mnome+" tirou "+maior+" e teve a maior nota");
	pApr=apr*100/qtd;
	for (x = 0; x < 10; x++) {
		System.out.println(nome[x]+" nota: "+nota[x]);
	}
	System.out.println(pApr+"% foram aprovados ");
}

}[/code]
Mas continua dando erro, se alguem puder me ajudar, preciso corrigir ate amanha para a professora avaliar.

Só pra te informar, o “AJUDEM” não vai te ajudar em nada, e falar que tá quase acabando o tempo também não.

A gente até te ajuda, mas não vamos fazer pra você, e não adianta cobrar e ficar com pressa, porque só vai fazer as pessoas ficarem com menos vontade de te ajudar.

Mas vamos lá, o que você quer dizer com “Mas continua dando erro” ?

Que erro ?

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 10
at ex58.main(ex58.java:33)

Na linha 33, troque

nome[x]=s.next(); 

por

nome[y]=s.next(); 

Você está tentando acessar a posição 10 de um array com 10 posições, e isso não é válido.

As posições começam a contar do 0, portanto se você tem um array com 10 posições, só pode acessar as posições de 0 a 9, a posição 10 seria a 11ª, entendeu?

Aquilo corrigiu um erro e abriu outro :
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 10
at ex58.main(ex58.java:48)

Na linha 49 troque

mnome = nome[x];

por

mnome = nome[y];

Você está simplesmente usando a variavel errada para acessar o array.

Testei 3 alunos, um q acertou todas, um q acertou 6, e um q acertou 1. E a saida do programa foi:

teste10 tirou 10 e teve a maior nota
teste10 nota: 0
teste6 nota: 0
tste1 nota: 0
null nota: 0
null nota: 0
null nota: 0
null nota: 0
null nota: 0
null nota: 0
null nota: 0
66% foram aprovados

Quando teria que sair algo do tipo:
teste10 tirou 10 e teve a maior nota
teste10 nota: q0
teste6 nota: 6
tste1 nota: 1
66% foram aprovados

[quote=BuzzLaitir]Testei 3 alunos, um q acertou todas, um q acertou 6, e um q acertou 1. E a saida do programa foi:

teste10 tirou 10 e teve a maior nota
teste10 nota: 0
teste6 nota: 0
tste1 nota: 0
null nota: 0
null nota: 0
null nota: 0
null nota: 0
null nota: 0
null nota: 0
null nota: 0
66% foram aprovados

Quando teria que sair algo do tipo:
teste10 tirou 10 e teve a maior nota
teste10 nota: q0
teste6 nota: 6
tste1 nota: 1
66% foram aprovados

[/quote]

O que você faz neste for?

for (x = 0; x < 10; x++) {  
            System.out.println(nome[x]+" nota: "+nota[x]);  
        }  

Mostra o nome e a nota do aluno

E para mostrar do jeito que você quer?

Desse jeito está imprimindo 10 resultados.
E onde você insere as notas neste array nota[]? Ele está vazio…

Faça um teste antes de imprimir, imprima só se o valor não for null.

Obreigado pela ajuda!
desculpe ´pelas noobices no forum, :frowning: