Estou codando um programa em que em uma das matrizes ele deve receber o código do aluno, o nome e a situação se ele foi aprovado ou não
public static void main(String[] args) {
Scanner ent = new Scanner(System.in);
int codigo ,nome, nota1, nota2, situação = 0 ;
int media, i, contAluno = 0;
int qtdDeLinhas = 5;
int qtdDeColunas = 3;
Object[][] primeiraMatriz = new Object[qtdDeLinhas][qtdDeColunas];
Object[][] segundaMatriz = new Object[qtdDeLinhas][qtdDeColunas];
for (int linha = 0; linha < qtdDeLinhas; linha += 1) {
contAluno = linha + 1;
// recebe a merda do codigo
System.out.print("Aluno " + contAluno + ", digite seu código aqui: ");
codigo = ent.nextInt();
// recebe a merda do nome
System.out.print("Aluno "+ contAluno + ", digite seu nome: ");
nome = ent.nextInt();
// recebe a 1º nota
System.out.println("Aluno " + contAluno + ", digite sua 1ª nota");
nota1 = ent.nextInt();
// recebe a 2º nota
System.out.println("Aluno " + contAluno + ", digite sua 2ª nota");
nota2 = ent.nextInt();
porém em nome ele não recebe o valor atribuido, na hora de rodar ele pergunta o nome, digito por exemplo “João” e ele me responde com o seguinte erro:
Exception in thread “main” java.util.InputMismatchException
** at java.util.Scanner.throwFor(Scanner.java:864)**
** 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 exercicio01.Exercicio01.main(Exercicio01.java:24)**
): não consegui resolver de forma alguma… alguma solução?
Se você quer escrever um nome, você tem que mudar o tipo da variavel nome para String e ao invés de usar o metodo nextInt(), você usa o nextLine(), mas porque? Você definiu a sua variavel nome como int, e int so recebe numeros inteiros, ou seja, letras não são permitids
Aqui você disse que todas as variáveis abaixo são do tipo int
int codigo ,nome, nota1, nota2, situação = 0 ;
Pra trocar o tipo da variável nome, você terá que coloca-la em outra linha
Ai você a define como String, do mesmo jeito que você fez com a variavel qtdDeLinhas, só que ao invés de int será String
package exercicio01;
import java.util.Scanner;
public class Exercicio01 {
public static void main(String[] args) {
Scanner ent = new Scanner(System.in);
int codigo, nota1, nota2, situação ;
String nome;
int media, i, contAluno = 0;
int qtdDeLinhas = 5;
int qtdDeColunas = 3;
Object[][] primeiraMatriz = new Object[qtdDeLinhas][qtdDeColunas];
Object[][] segundaMatriz = new Object[qtdDeLinhas][qtdDeColunas];
for (int linha = 0; linha < qtdDeLinhas; linha += 1) {
contAluno = linha + 1;
// recebe a merda do codigo
System.out.print("Aluno " + contAluno + ", digite seu código aqui: ");
codigo = ent.nextInt();
// recebe a merda do nome
System.out.print("Aluno "+ contAluno + ", digite seu nome: ");
nome = ent.next();
// recebe a 1º nota
System.out.println("Aluno " + contAluno + ", digite sua 1ª nota: ");
nota1 = ent.nextInt();
// recebe a 2º nota
System.out.println("Aluno " + contAluno + ", digite sua 2ª nota: ");
nota2 = ent.nextInt();
// calcula a média
media = (nota1 + nota2) / 2;
primeiraMatriz[linha][0] = codigo;
segundaMatriz[linha][0] = primeiraMatriz[linha][0];
segundaMatriz[linha][1] = nome;
primeiraMatriz[linha][1] = nota1;
primeiraMatriz[linha][2] = nota2;
segundaMatriz[linha][2] = situação;
System.out.println("Linha: " + linha);
System.out.println("Primeira Matriz: " + primeiraMatriz[linha][0] + "|" + primeiraMatriz[linha][1] + "|" + primeiraMatriz[linha][2] + "|" + media);
System.out.println("Segunda Matriz: " + segundaMatriz[linha][0] + "|" + segundaMatriz[linha][1] + "|" + segundaMatriz[linha][2]);
}
if( (media >= 0) && (media <= 4) ){
System.out.println("Reprovado");
} else if(media <= 5){
System.out.println("Reprovado");
} else if(media <= 6){
System.out.println("Reprovado");
} else if(media <= 7){
System.out.println("Aprovado");
} else if(media <= 8){
System.out.println("Aprovado");
} else if(media <= 10){
System.out.println("Aprovado");
}
}
}
ele me retorna da seguinte forma
Aluno 1, digite seu código aqui: 6218931
Aluno 1, digite seu nome: Joao pinto java
Aluno 1, digite sua 1ª nota:
10
Aluno 1, digite sua 2ª nota:
10
Linha: 0
Primeira Matriz: 6218931|10|10|10
Segunda Matriz: 6218931|Joao pinto java|0
A unica coisa que falta é que na segunda matriz, no lugar de 0 eu quero que ele me retorne a situação do aluno
se a média dele for = ou maior que 7 ele estará aprovado, senão, reprovado.
fiz o sisteminha de media ali mas não estou sabendo implementar ele na situação… entende?
O seus if e else if estão fora do for, ou seja, primeiro vai executar o for x vezes para depois executar o if ou else if, além do que, voce não precisa de tantos else if
if(media > 0 && media <= 6){
System.out.println("Reprovado");
}
else if(media > 6 && media <= 10){
System.out.println("Aprovado");
}
perfeito amigo, mas uma duvida, colocando o if e else dentro do for o código acaba sendo imprimido assim
run:
Aluno 1, digite seu código aqui: 1565
Aluno 1, digite seu nome: Joao
Aluno 1, digite sua 1ª nota:
10
Aluno 1, digite sua 2ª nota:
6
Linha: 0
Primeira Matriz: 1565|10|6|8
Segunda Matriz: 1565|Joao
Aprovado
e como faria pra por o aprovado ao lado de João?
ficando
1565|Joao|Aprovado
??
Chama os seus if else antes da impressão e ao invés de colocar System.out.println(“Reprovado”) ou System.out.println(“Aprovado”), atributa o valor “Reprovado” ou “Aprovado” a uma variavel, e então você coloca na sua frase essa variavel
Cria uma variavel do tipo String, se a media for <= 6 você atribui o valor “Reprovado” a ela, se for > que 6 você atribui o valor “Aprovado”, e então voce coloca essa variavel no System.out.println