Jump to content
ole1990

Problema passar valores ficheiro para matriz

Recommended Posts

ole1990

bom tarde,

tenho um problema ao passar valores de um ficheiro para uma matriz.

os valores no ficheiro tem esta formatação:

1;2;3

4;5;6

7;8;9

alguém me pode ajudar na ultima parte do programma que é mesmo ai que desejo passar o que esta num ficheiro para uma matriz.

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ficheiros;

import java.util.Scanner;
import java.io.File;
import java.util.Formatter;

/**
*
* @author ASDC */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
        String nomefich;
        Scanner ler = new Scanner(System.in); //para poder ler valores

        System.out.println("Qual o nome do ficheiro? ");
        nomefich = ler.nextLine();//nome do ficheiro
        System.out.println("a frase introduzida foi: " + nomefich);// mostrar nome do ficheiro
        Formatter fOut; //formatar ficheiro
        fOut = new Formatter(new File(nomefich)); //ficheiro
        //A PARTIR DE QUI TUDO VAI SER CONTIDO NO FICHEIRO

        // **************** preenchimento de uma matriz qualquer
        float[][] matriz = new float[3][3];
        System.out.println("Insira os elementos da matriz:");
        for (int i = 0; i < 3; i++) {

            for (int j = 0; j < 3; j++) {
                matriz[i][j] = ler.nextFloat();
            }
        }
        //*****************************
        //inserir matriz num FICHEIRO
        int c = 0;//para apagar depois permite o controlo doas ";"
        float num = 0;
        for (int i = 0; i < 3; i++) {
            c = 0;//para apagar depois permite o controlo doas ";"
            for (int a = 0; a < 3; a++) {
                num = matriz[i][a];
                //fOut.format("[");
                fOut.format("" + matriz[i][a]);
                if (c < 2) {//para apagar depois permite o controlo doas ";"
                    fOut.format(";");//para apagar depois permite o controlo doas ";"
                }//para apagar depois permite o controlo doas ";"
                c++;//para apagar depois permite o controlo doas ";"

            }
            fOut.format("%n");
        }

        fOut.close();
        //PASSAR CONTEÚDO DE UM FICHEIRO PARA A MATRIZ***********************
        String linha = "";
        Scanner finput = new Scanner(new File(nomefich));
        while (finput.hasNext()) {
            linha += finput.nextLine();

       }
        System.out.println("o conteudo: " + linha);
       float[][] matriza = new float[3][3];
        for (int h = 0; h < matriz.length; h++) {
          //armazena valores antes de ";"
            String[] ty = linha.split(";");
            for (int j = 0; j < matriz[0].length; j++) {
                //converte e armazena os valores de ty na matriz "matriz"
                matriz[h][j] = Float.parseFloat(ty[j]);
           }
        }
//-------- fim ficheiro matriz
//        int x=fIn.nextInt();
//        System.out.println(x);
//        fIn.close();
        // TODO code application logic here

       //VER A MATRIZ
       System.out.println(" ");
        for (int i = 0; i < 3; i++) {
            System.out.println();
            for (int j = 0; j < 3; j++) {
                System.out.format("[" + matriza[i][j] + "]" + " ");
            }
        }
    }
}

Share this post


Link to post
Share on other sites
ole1990

SIm e agradeço desde já :D só que tenho um erro not a statement na linha onde guarda oc caracteres na matriz tive a procurar no google e esse erro é porque o java esta a espera de algo da váriavel como se fosse em "for" estava a espera dos parenteses, mas não tou a ver o que o java espera de uma simplse matriz :-S,

no me sabes dizer o que podera ser?

Share this post


Link to post
Share on other sites
Colector Boy

Aqui está. :D

Quando te dei as dicas não estava a pensar a 100% e depois vi que havia coisas que estavam no código mas não estavam a fazer sentido.

Como o facto de eu não me ter lembrado que o split retorna uma matriz e eu estava a pensar ir buscar carácter a carácter ao ficheiro e ir verificando se o carácter que tínhamos ido buscar ao ficheiro era o '\n'.

package Principal;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Principal
{   
    //constantes
    static final int LINHAS=3;
    static final int COLUNAS=3;


    public static void main(String[] args) throws FileNotFoundException
    {
        String nomefich=".\\teste.txt";
        String linha = "";          //linha que estamos a percorrer
        String aux[];               //string auxiliar
        Scanner finput = new Scanner(new File(nomefich));
        String[][] matriz = new String[LINHAS][COLUNAS];

        int i = 0; //linhas
        int j = 0; //colunas

        while (finput.hasNext()) //enquanto nao percorremos o ficheiro todo
        {
            linha=finput.nextLine(); //buscar linha
            aux=linha.split(";");

            //verificar se o comprimento da linha é menor que o numero de colunas
            //permitido pela matriz
            if(aux.length<=COLUNAS && i<LINHAS)
            {
                for(j=0;j<aux.length;j++)   //guardar carácteres na matriz
                {
                    matriz[i][j]=aux[j];
                    System.out.println("matriz["+i+"]["+j+"]="+matriz[i][j]);
                }

            }
            else
            {
                System.out.println("ERRO:Colunas="+COLUNAS+",aux="+aux.length);
            }

            i++; //passar para a proxima linha na matriz
        }
    

    }

}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.