Matriz inversa [RESOLVIDO]

6 respostas
L

Pessoal, estou quebrando a cabeça para fazer uma matriz ao contrario.
Fiz assim:

public static void main(String[] args) {
     double a [] = new double [20];
     double b [] = new double [20];
     double num;
     int i,j=1;
     String snum,s= "";


     for (i=1;i<a.length;i++)
     {
      snum = JOptionPane.showInputDialog("digite o valor");
      num = Double.parseDouble(snum);
      a[i] = num;
     }

      for (i=a.length;i>1;i--)
      {
          j = j+1;
          b[j] = a[i];
      }

     JOptionPane.showMessageDialog(null, b[j]);

    }}

Porem não dá certo, alguem tem uma outra ideia?

6 Respostas

R

Boa noite lety_cia,

Segue o código conforme o seu enunciado, e o jeito que você estava fazendo tava quase lá :smiley:

/**
	 *Ler 20 elementos de uma matriz A e construir uma matriz B da mesma dimensão com os mesmos 
	 *elementos da matriz A, sendo que deverão estar invertidos. Ou seja, o primeiro elemento de A 
	 *passa a ser o último de B, o segundo elemento de A passa a ser o penúltimo de B e assim por diante. 
	 *Apresentar as matrizes A e B.
	 * @param args
	 */
	public static void main(String[] args) {

		double a[] = new double[20];
		double b[] = new double[20];
		double numero;
		String leitura = "";

		for (int i = 0; i < a.length; i++) {
			leitura = JOptionPane.showInputDialog("Digite o valor ");
			numero = Double.parseDouble(leitura);
			a[i] = numero;
		}

		for (int i = a.length - 1, pos = 0; i >= 0; i--, pos++) {
			b[pos] = a[i];
			JOptionPane.showMessageDialog(null, "Matriz A: " + a[pos]);
			JOptionPane.showMessageDialog(null, "Matriz B: " + b[pos]);

		}
	}

Se isso resolveu seu problema coloque [RESOLVIDO] no assunto do fórum !

Tchau!

Daniel_Girotto

Boa Noite
O problema em seu código está na linha 16, quando i = a.length, ele recebe o valor 20, mas como os índices dos vetores iniciam em 0 o índice máximo que você possui é 19, portanto o código falha logo na primeira instrução do for. Para resolver faça i = a.length-1.

Abraço!

L

Muito obrigada pelas dicas, vou testar aqui.

Vingdel
Daniel Girotto:
Boa Noite O problema em seu código está na linha 16, quando i = a.length, ele recebe o valor 20, mas como os índices dos vetores iniciam em 0 o índice máximo que você possui é 19, portanto o código falha logo na primeira instrução do for. Para resolver faça i = a.length-1.

Abraço!


Na verdade tem mais coisa errada:

1. A variável i deve ser iniciada em cada for. 2. A variável j deve ser iniciada com 0. 3. enfim... segue corrigido:
public static void main(String[] args) {
		double a [] = new double [20];
		double b [] = new double [20];
		double num;
		int j = 0;
		String snum, sa = "", sb = "";

		for (int i = 0; i < a.length; i++){
			snum = JOptionPane.showInputDialog("digite o valor");
			num = Double.parseDouble(snum);
			a[i] = num;
			sa = sa+a[i]+" ";
		}

		for (int i = a.length; i > 0; i--){
			b[j] = a[i-1];
			sb = sb+b[j++]+" ";
		}
		JOptionPane.showMessageDialog(null,"Matriz A: " + sa + "\nMatriz B: " + sb);
	}
L

Valeu pessoal pelas dicas, todas foram otimas.

U
static String[] num = {"0","1","2","3","4","5","6","7","8","9"};
static String[] str = new String[num.length()];

void arrayReverse(){
	int count = 0;

	for(int i = num.length()-1; i >=0; i--){
		str[count++] = Character.toString(num.charAt(i));
	}
}

void arrayPrint(){
	for(String print: str){
		System.out.println(print);
	}
}

forma mais simples e eficaz que consegui pensar no momento.

Criado 10 de junho de 2011
Ultima resposta 12 de jun. de 2011
Respostas 6
Participantes 5