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

15 respostas
programaçãojava
A

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(<a href="http://System.in">System.in</a>);

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?

15 Respostas

M

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

A

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

A

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

M

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

A

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 = ?

M

String nome;

A

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

Ficou algo como

String nome;

 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

M

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

A

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?

M

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");
}
W

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
??

M

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

W

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?

M

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

W
Criei a stringString 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

Criado 16 de junho de 2018
Ultima resposta 17 de jun. de 2018
Respostas 15
Participantes 3