Jump to content
ole1990

problema copiar uma patriz para outra

Recommended Posts

ole1990

bom noite,

alguem me consegue dizer como faço para passar o valor da str para uma matriz?

quero que passe cada linha sabendo que no ficheiro os dados estam organizados desta forma:

4;6;8

8;9;7

mas pode ser numeros como texto.

Scanner finput = new Scanner(new File(nomefich));      
while (finput.hasNext()) {
            linha += finput.nextLine();            
            String str[]=linha.split(";");            
       }

Share this post


Link to post
Share on other sites
brunoais

O q é que esse código faz de mal? Como é que deveria ser o resultado (mostra exemplos sff)


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
Colector Boy

Defines constantes com os tamanho da matriz do género:

Const LINHAS=3,COLUNAS=3

matriz[LINHAS][COLUNAS]  //a matriz é uma matriz de string

Já tens a parte para separar onde encontrar a ',' logo só tens que ir colocando cada carácter na matriz.

A string que contem:

4;6;8

8;9;7

Tem essa informação separada por ENTER?

Se tiver podes utilizar algo do género:

if(chara=='\n')        //chara é o carácter que tiraste com o split(";");

{

  //mudar de linha

}

Ou seja:

Scanner finput = new Scanner(new File(nomefich));     
int i=0; //linhas
int j=0; //colunas
while (finput.hasNext()) 
{
            linha += finput.nextLine();           
            String str[]=linha.split(";");                       
             
             if(i<LINHAS && j<COLUNAS) //se estamos dentro do limite da matriz
             {
                   //mudamos de linha?

                 if(chara=='\n')         //chara é o carácter que tiraste com o split(";");
                {                             
                     i++;  //mudar de linha     
                }
                matriz[i][j]          //guardar carácter 
                j++;                   //passar para a próxima coluna
             }
}

Espero ter ajudado.

:D

Share this post


Link to post
Share on other sites
ole1990

bom dia,

o resutlado é k os numeros

1;2;3

4;5;6

que estam num ficheiro, quero passar-los para uma matriz para poder trabalhar com ela no programa

neste código:

String linha = "";
        Scanner finput = new Scanner(new File(nomefich));
        int t = 0; //linhas
        int r = 0; //colunas
String chara ="";
        String[][] matrizc = new String[3][3];
        while (finput.hasNext()) {
            linha += finput.nextLine();
            String str[] = linha.split(";");
            if (r < 3 && t < 3) //se estamos dentro do limite da matriz
            {
                //mudamos de linha?

                if (chara == "\n") //chara é o carácter que tiraste com o split(";");
                {
                    r++;  //mudar de linha     
                }
                matrizc[r][t];         //guardar carácter 
                t++;                   //passar para a próxima coluna
            }

        }

Ele da-me um erro "not a statement" nesta linha "matrizc[r][t];        //guardar carácter " no me sabes dizer o porqué? ja andei a procurar na net e supostamente é porque deve ser uma variavel propria do java genro "for" mas acho que uma matriz não tem nada d'isso?

Desde-já agradeço pela ajuda fornecida

Share this post


Link to post
Share on other sites
Colector Boy

Na linha matrizc[r][t]; não estas a fazer nenhuma operação.

Tens de fazer algo do género:

matrizc[r][t]=chara;  //guardar numero

Vê se isto te resolve o problema.

Share this post


Link to post
Share on other sites
ole1990

já troquei era um nextLine();

obrigado pela ajuda, ta o codigo final caso alguem presise:

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

package finalficheiros;
import java.util.Scanner;
import java.io.File;
import java.util.Formatter;
/**
*
* @author asd
*/
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
        String[][] matriz = new String[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.nextLine();
            }
        }
        //*****************************
        //inserir matriz num FICHEIRO
        int c = 0;//para apagar depois permite o controlo doas ";"
        String num = "";
        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 conteudo do ficheiro para outra matriz***********************
        int LINHAS=3, COLUNAS=3;
        //String nomefich="teste.txt";
        String linha = "";          //linha que estamos a percorrer
        String aux[];               //string auxiliar
        Scanner finput = new Scanner(new File(nomefich));
        String[][] matrizqq = 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 matrizqq
            if(aux.length<=COLUNAS && i<LINHAS)
            {
                for(j=0;j<aux.length;j++)   //guardar carácteres na matriz
                {
                    matrizqq[i][j]=aux[j];
                    System.out.println("matriz["+i+"]["+j+"]="+matrizqq[i][j]);
                }

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

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


//        for (int j = 0; j < 3; j++) {
//                System.out.format("[" + matriz[j] + "]" + " ");
//            }
//        aux = linha.split(";");
//        System.out.println(linha);
//        String[][] matrizb = new String[3][3];
//        aux = linha.split("<tr>");
//        for (int i = 1; i < aux.length && i < 20; i++) {
//        System.out.format("[" + aux[i] + "]" + " ");
//        }
//            if (r < 3 && t < 3) //se estamos dentro do limite da matriz
//            {
//                //mudamos de linha?
//                if (chara == "\n") //chara é o carácter que tiraste com o split(";");
//                {
//                    r++;  //mudar de linha
//                }
//                matrizc[r][t] = chara;
//                System.out.println("o valor é:"+chara);//guardar carácter
//                t++;                   //passar para a próxima coluna
//            }

//        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 q = 0; q < 3; q++) {
            System.out.println();
            //System.out.format(matrizb[i]);
            for (int w = 0; w < 3; w++) {
                System.out.format("[" + matrizqq[i][j] + "]" + " ");
            }
        }
        // TODO code application logic here
    }

}

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.