Matriz inversa [RESOLVIDO]

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?

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!

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!

Muito obrigada pelas dicas, vou testar aqui.

[quote=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!

[/quote]
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:

[code] 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);
}[/code]

Valeu pessoal pelas dicas, todas foram otimas.

[code]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);
}
}[/code]

forma mais simples e eficaz que consegui pensar no momento.