Ajuda | Atribuição de valor em texto para uma string(JAVA)

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

1 curtida

Esqueci de informar que sou leigo em java, mas caramba, bem lembrado sobre isso!! Obrigado!! vou tentar resolver aqui rapidinho

Só falta eu saber como mudar de int para string no caso ):

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

1 curtida

Eu tinha pego essa ideia já, porém não faço ideia de como ficaria isso(sou leigo em java… isso é uma atvd da facul)
String nome = ?

String nome;

1 curtida

AAAAA eu consegui, tava fuçando já nesse tempo

Ficou algo como

String nome;
lá em baixo a pergunta de qual o nome do aluno…
System.out.print("Aluno "+ contAluno + ", digite seu nome: ");
nome = ent.next();

ficou perfeito, agora só falta eu saber chamar a string da situação que ta mal criada :s

Como assim mal criada? Posta o seu código atualizado e o que você quer fazer

1 curtida

Assim maninho
meu código tá assim:

 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… :frowning: 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");
}
1 curtida

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

1 curtida

não consegui por em linhas de código essa ideia ): tentei… mas não saiu não, poderia me dar um exemplo de como ficaria?

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

Criei a string…
String situação;
if(media > 0 && media <= 6){
System.out.println(“Reprovado”);
}
else if(media > 6 && media <= 10){
System.out.println(Aprovado);
}

(era a unica não sendo usada e que foi designada pra essa func)
não deu tão certo :s