publicstaticvoidmain(Stringargs[]){Scannerinput=newScanner(System.in);intl=0,c=0,ordem=0;System.out.println("Digite as dimensões da matriz A(lxc): ");l=input.nextInt();System.out.println("x");c=input.nextInt();System.out.println("Matriz A"+l+"x"+c);intordem=(l*c);doublemat[][]=newdouble[l][c];
note que voce declara duas vezes a variavel “ordem”:
intl=0,c=0,ordem=0;intordem=(l*c);
Vini_Fernandes
Cara, veja as seguintes alteracoes:
importjava.util.Scanner;publicclassMatriz{publicstaticvoidmain(Stringargs[]){Scannerinput=newScanner(System.in);intl=0,c=0;System.out.println("Digite as dimensões da matriz A(lxc): ");System.out.println("Digite o numero de linhas: ");l=input.nextInt();System.out.println("Digite o numero de colunas: ");c=input.nextInt();System.out.println("Matriz A["+l+"]x["+c+"]");doublemat[][]=newdouble[l][c];}}
t+
L
LeandroNDias
Ok esqueçam da variável ordem na verdade esta errado mesmo consideremos o post acima do nosso amigo, o que falta para que esse código me permita redimensionar o tamanho da matriz de acordo com as linas e colunas digitadas pelo usuário???
Ele não executa aqui, alguns amigos me disseram que somente vou conseguir ver isso com Vector… o problema é que nunca sei Vector.
Preciso ver isso para um trabalho de matematica… detalhe que isso é só o começo depois vou me esforçar aqui para resolver o restante multiplicação de matrizes ,matriz inversa e etc.
Obrigado.
Vini_Fernandes
Cara, a classe Vector nao eh recomendada, portanto, use alguma classe que implemente a interface List, por exemplo, ArrayList. Com essa classe voce pode modelar um vetor com tamanho indefinido. Agora, matriz com dimensoes dinamicas eu nao sei como voce fará! Creio que voce tera que implementar a sua propria!
T+
L
LeandroNDias
Legal Vini Fernandes.
Como ficaria o código usando ArrayList?
na verdade é só isso mesmo que quero definir uma matriz em que o usuário define o tamanho dela,coisa boba e que eu não sei rsrs :lol:
Valew
Vini_Fernandes
Cara, dá uma olhada em um exemplo de matriz dinâmica que implementei. Não conheço outra forma…rsrs
importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;publicclassMatrizDinamica<T>{privateMap<Integer,List<T>>matriz;privateIntegertotalDeLinhas;privateIntegertotalDeColunas;publicMatrizDinamica(Integerlinhas,Integercolunas){this.redimensionar(linhas,colunas);}publicTgetElemento(Integerlinha,Integercoluna){returnmatriz.get(linha).get(coluna);}publicvoidsetElemento(Integerlinha,Integercoluna,Tvalor){matriz.get(linha).add(coluna,valor);}publicvoidredimensionar(Integerlinhas,Integercolunas){this.totalDeLinhas=linhas;this.totalDeColunas=colunas;matriz=newHashMap<Integer,List<T>>();for(intk=0;k<linhas;k++){matriz.put(k,newArrayList<T>(colunas));}}publicList<T>pegarLinha(Integerlinha){returnmatriz.get(linha);}publicIntegergetTotalDeLinhas(){returntotalDeLinhas;}publicIntegergetTotalDeColunas(){returntotalDeColunas;}publicList<T>pegarColuna(Integercoluna){List<T>valoresDaColuna=newArrayList<T>();for(intk=0;k<totalDeLinhas;k++){valoresDaColuna.add(matriz.get(k).get(coluna));}returnvaloresDaColuna;}publicstaticvoidmain(String[]args){//construindo uma matriz 2X2MatrizDinamica<Double>minhaMatriz=newMatrizDinamica<Double>(2,2);minhaMatriz.setElemento(0,0,23.3);minhaMatriz.setElemento(0,1,222223.0);minhaMatriz.setElemento(1,0,5435435.3);minhaMatriz.setElemento(1,1,999993.3);System.out.println("Os valores da coluna sao: "+minhaMatriz.pegarColuna(1));System.out.println("Os valores da linha sao: "+minhaMatriz.pegarLinha(0));//redimensionando para 1X1minhaMatriz.redimensionar(1,1);minhaMatriz.setElemento(0,0,333.33);minhaMatriz.setElemento(0,1,777.77);System.out.println("Os valores da coluna 1 sao: "+minhaMatriz.pegarColuna(0));System.out.println("Os valores da coluna 2 sao: "+minhaMatriz.pegarColuna(1));System.out.println("Os valores da linha 1 sao: "+minhaMatriz.pegarLinha(0));}}
Faça uns testes.
T+
L
LeandroNDias
Ok vou estudar o seu código aqui, mas me pareceu complicado demais para o que eu estava querendo, deve ter algum jeito mais simples, vou tentar aqui caso não consiga te falo.
Valew pelas dicas.
abraço
Vini_Fernandes
cara, o codigo já possui uma estrutura, apenas nao tratei as exceptions. Creio que a partir da classe MatrizDinamica voce conseguira cominhar adiante. O que resta voce fazer sao os metodos:
publicMatrizDinamicamultiplicarMatriz(MatrizDinamicaoutraMatriz){//retornar a matriz resultante da multiplicacao}publicMatrizDinamicasomarMatriz(MatrizDinamicaoutraMatriz){//retornar a matriz resultante da soma}publicTtracoDaMatriz(){//retornar a soma dos elementos da Diagonal}
E assim por diante!
T+
Vini_Fernandes
Uma coisa que me esqueci de dizer eh que voce vai ter que estudar a API Collection e Map, nao tem jeito!
DA uma olhada no metodo rtaco que fiz:
publicDoubletracoDaMatriz(){
if(totalDeColunas==totalDeLinhas){
Doubletraco=0.0;for(intk=0; k < totalDeLinhas; k++){traco+=(Double)matriz.get(k).get(k);}
returntraco;}
else{
thrownewRuntimeException("MatrizDinamica deve ser quadrada. Numero de linhas eh diferente do numero de colunas");}
}
T+
L
LeandroNDias
Ok vou dar uma estudada, só não entendi no seu código onde é que o usuário entra com a dimensão linhas x colunas da matriz?
T+
Vini_Fernandes
Cara, todas as vezes que voce fizer:
//aqui o usuario cria uma matriz dinamica e define o numero de linha e de colunasnewMartizDinamica(linha,coluna);
alexandreclayton
Cara acho que é isso que você quer.
Aqui temos uma matriz 2x2 gerada Dinamicamente.
public Vector Teste = new Vector();
Teste.addElement(newjava.lang.String[][]{newjava.lang.String[]{“1111”,“2222”},// Primeira linhanewjava.lang.String[]{“3333”,“4444”}// Segunda Linha});