[resolvido] Ajuda com matriz

6 respostas
cleyvison

Pessoal boa noite, depois de muito tempo voltei a estudar Java e gostaria de contar com a ajuda de vc’s novamente. É o seguinte, com fiquei muito tempo parado esqueci coisas basicas, la vai a primeira pergunta:
O programa tem que ler nomes e notas de alunos e exibir os nomes e notas de quem tiver nota menor que 6
A logica eu acho que ta certa mas, não to conseguindo escrever na matriz nem exibi-la.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;


public class Principal {

	public static void main(String[] args) throws IOException {
		String nome;
		String notaTeclado;
		double nota;
		String[][] matriz = new String[5][5];
		BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));    
		int i=0;
		int j=0;
		while (i<=5){
			System.out.print("Digte um nome: ");
			nome = teclado.readLine();
			System.out.print("Digte a nota: ");
			notaTeclado = teclado.readLine();
			nota = Double.parseDouble(notaTeclado);
			if (nota<6){
				for (i=0;i<=5;i++){
					for(j=0;j<=5;j++){
						matriz[i][j]=/* não sei o que colocar aqui ja tentei de tudo
									    o que eu quero aqui e salvar o nome em [i] e a nota em [j]
									 */
						System.out.println // aqui quero exibir a matriz, com os nomes e notas armazenados
					}
				}
				
			}			
		}		
	}

}

6 Respostas

marcos1EM

Acho que está meio sem lógica a utilização de dos dois For. Não entendi como gostaria que sua matriz ficasse.

É assim:

nome1 | nota
nome2 | nota
nome3 | nota
nome4 | nota
nome5 | nota

ou

nome1| nota1| nota2 | nota3 | nota4
nome2| nota1| nota2 | nota3 | nota4
nome3| nota1| nota2 | nota3 | nota4
nome4| nota1| nota2 | nota3 | nota4
nome5| nota1| nota2 | nota3 | nota4

cleyvison

assim.
to usando dois for para mudar os dois indices.

19/11/2010 22:50:22     Assunto: Re:Ajuda com matriz  

--------------------------------------------------------------------------------
 
Acho que está meio sem lógica a utilização de dos dois For. Não entendi como gostaria que sua matriz ficasse. 

É assim: 

nome1 | nota 
nome2 | nota 
nome3 | nota 
nome4 | nota 
nome5 | nota
marcos1EM

Então para fazer sentido a sua matriz deveria ser String[5][2] - 5 linhas e 2 colunas

marcos1EM

Como a melhor maneira de explicar é mostrando o código então veja se é isso que queria e se entendeu.

String nome;
        String notaTeclado;
        double nota;
        String[][] matriz = new String[5][2];
        BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
        int i = 0;
//        int j = 0;

          while (i < 5) { //while (i <= 5) {
            System.out.print("Digte um nome: ");
            nome = teclado.readLine();
            System.out.print("Digte a nota: ");
            notaTeclado = teclado.readLine();
            nota = Double.parseDouble(notaTeclado);
            if (nota < 6) {
                matriz[i][0] = nome;
                matriz[i][1] = String.valueOf(nota);
            }
            i++;
        }

        for (int linha = 0; linha < matriz.length; linha++) {
            for (int coluna = 0; coluna < matriz[linha].length; coluna++) {
                System.out.print(matriz[linha][coluna] + " ");
            }
            System.out.println("\n");
        }
aajjbb

a proposito, nesse BufferedReader, acho que o uso da classe Scanner gerar melhor desempenho…

String nome;  
           String notaTeclado;  
           double nota;  
           String[][] matriz = new String[5][2];  
           Scanner teclado = new Scanner(System.in);  
           int i = 0;  
           int j = 0;  
     
             while (i < 5) { //while (i <= 5) {  
               System.out.print("Digte um nome: ");  
               nome = teclado.next();  
               System.out.print("Digte a nota: ");  
               notaTeclado = teclado.next();  
               nota = Double.parseDouble(notaTeclado);  
               if (nota < 6) {  
                   matriz[i][0] = nome;  
                   matriz[i][1] = String.valueOf(nota);  
               }  
               i++;  
           }  
     
           for (int linha = 0; linha < matriz.length; linha++) {  
              for (int coluna = 0; coluna < matriz[linha].length; coluna++) {  
                   System.out.print(matriz[linha][coluna] + " ");  
               }  
              System.out.println("\n");  
        }
cleyvison

Pow cara valeu, eu estava usando os dois for pq certa vez implementei um codigo onde isso era necessário, mas vc me ajudou muito na verdade como eu sei o numero de posições e é uma array pequeno não precisava ficar inventando.
So mudei uma coisa, na hora de exibir os valores armazenados, exclui a impressão dos valores nulos…

import java.io.IOException;
import java.util.Scanner;


public class Principal {

	public static void main(String[] args) throws IOException {
		String nome;     
		   String notaTeclado;     
		   double nota;     
		   String[][] matriz = new String[5][2];     
		   Scanner teclado = new Scanner(System.in);     
		   int i = 0;     
		   while (i < 5) { //while (i <= 5) {     
		       System.out.print("Digte um nome: ");     
		       nome = teclado.next();     
		       System.out.print("Digte a nota: ");     
		       notaTeclado = teclado.next();     
		       nota = Double.parseDouble(notaTeclado);     
		       if (nota < 6) {     
		           matriz[i][0] = nome;     
		           matriz[i][1] = String.valueOf(nota);     
		       }     
		       i++;     
		   }     
		  
		   for (int linha = 0; linha < matriz.length; linha++) {     
		      for (int coluna = 0; coluna < matriz[linha].length; coluna++) { 
		    	  if (matriz[linha][coluna] != null){ // exclui a impressão dos valores nulos
		           System.out.print(matriz[linha][coluna] + " ");
		    	  }
		       }     
		      System.out.println("\n");     
		}    
		
	}

Mais uma vez muito obrigado.

Criado 19 de novembro de 2010
Ultima resposta 20 de nov. de 2010
Respostas 6
Participantes 3