Ayuda con programa de JAVA?
Hola necesito realizar el siguiente programa en Java:
Para el siguiente proyecto especificará a través de línea de comandos el tamaño del
Arreglo de Arreglos (matriz) que se utilizará para realizar las operaciones indicadas mas
adelante, ejemplo:
c:\java Proyecto 3 3 <enter>
Significa que el Arreglo de Arreglos en este ejemplo tiene 3 filas y 3 columnas.
Dentro de su programa tendrá que declarar un arreglo de tipo entero con el número de
Filas y Columnas especificados anteriormente.
Este Arreglo de Arreglos será llenado con datos aleatorios utilizando para ello la clase
Math y el método random().
Una vez lleno el Arreglo de Arreglos, realice la matriz simétrica
e imprimala en pantalla.
1 9 -6
0 2 1
-2 4 5
Ojalá me puedan ayudar con el código ya que soy nuevo en esto de la programación y no se aun utilizar el metodo Random. Tengo una matriz hecha en dos claces pero con ella el resultado me da del 1 al 9 se las dejo para ver si me pueden coregir o ayudar con lo que me falte de código.
public class Matriz {
public static void main(String args[]) {
int x = Integer.parseInt(args[0]);
int y = Integer.parseInt(args[1]);
int a[][] = new int[x][y];
ArregloDeArreglos obj = new ArregloDeArreglos(a);
obj.imprimir();
}
}
public class ArregloDeArreglos {
public int a[][];
public ArregloDeArreglos(int a[][]) {
this.a = a;
}
public void operacion() {
int x=1;
for (int i = 0; i < this.a.length; i++) {
for (int j = 0; j < this.a[i].length; j++) {
this.a[i][j] = x++;
}
}
}
public void imprimir() {
operacion();
for (int i = 0; i <= this.a.length; i++) {
for (int j = 0; j < this.a[i].length; j++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}
}
}
1 2 3
4 5 6
7 8 9
Comments
Ok, esta vez si muestras algo hecho, no voy a analizar, pero te voy a dar el código completo de lo que requieres como regalo de Navidad.
import java.util.*;
public class Matriz {
static Random rand = new Random();
static int pRand(int max, int min) {
return (int)(Math.random() * (max - min))+min;
}
static void imprimir(String s) {
System.out.print(s);
}
public static void main(String[] args){
int renglones, columnas;
renglones = Integer.parseInt(args[0]);
columnas = Integer.parseInt(args[1]);
if (renglones == columnas){
int[][] a = new int[renglones][columnas];
for(int i = 0; i < a.length; i++)
for(int j = 0; j < a[i].length; j++)
a[i][j] = pRand(15,-5);
imprimir("La matriz original es: ");
for(int i = 0; i < a.length; i++){
imprimir("\n ");
for(int j = 0; j < a[i].length; j++)
imprimir(" "+a[i][j]);
}
imprimir("\nLa matriz simetrica es: ");
for(int i = 0; i < renglones; i++){
imprimir("\n ");
for (int j = 0; j < columnas; j++){
imprimir(" " + a[j][i]);
}
}
}
else {
imprimir("La matriz no es cuadrada.");
}
}
}
Analizalo que de este código puedes darte cuenta de varias cosas.
Saludos.
Necesitas otra variable y dejar tu incrementador aparte pero si no lo acupas puedes borrarlo:
public void operacion() {
for (int i = 0; i < this.a.length; i++) {
for (int j = 0; j < this.a[i].length; j++) {
int ran = (int)(Math.random()*10);
this.a[i][j] = ran;
}
}
}
La explicaciòn es la siguiente:
Math.random() //Genera un numero al azar
(int) //Lo comvierte a entero
10 //Ya que saca aleatoreos entre .1 y .9999 de este modo obtienes un numero despues del decimal
Como parametro puedes poner cuantos numeros quieres que Math.random genere, si lo dejas en blanco solo creara uno
cuando asignas el valor a la localidad de la matriz para que la llene con valores enteros usando la clase Math, usa lo siguiente:
public void operacion() {
for (int i = 0; i < this.a.length; i++) {
for (int j = 0; j < this.a[i].length; j++) {
int x = (int)(Math.random()*10);
this.a[i][j] = x;
}
}
}
eso deberia de funcionar.
espero te sirva