Problema_Arreglos

AnaSofia
03 de Septiembre del 2009
Buenas noches:

Estoy desarrollando un ejercicio relativamente sencillo, es pedir al usuario una cant de 5 numeros, decir cual es el mayor, el menor y ordenarlos. El problema es que tengo un metodo para cada funcion y al realizarlo los metodos modifican al vector, haciendo que cuando continua su labor el segundo metodo el vector ya esta modificado. Espero que alguien me pueda ayudar.... Gracias.
Anexo el código
import javax.swing.JOptionPane;

public class Menornumero {
static int carga[]=new int [5];
// public static int menor=0,mayor=0,ordenado=0;

public static int[] ingresarDatos() {

carga=new int [5];
for (int i=0;i<=4;i++)
{
String num = JOptionPane.showInputDialog(null, "ingrese el numero"+i);
int numero=Integer.parseInt(num);
carga[i]=numero;
}

for (int i=0;i<=4;i++)
{
System.out.println("numero"+ carga[i]);
}
return carga;


}

public static void menorDato(int carga[]) {
int menor = 0;

for (int i=0;i<carga.length;i++){
for (int j=1;j<carga.length;j++){

if (carga[i]<carga[j])
{
menor=carga[i];
carga[j]=menor;
}

}
}
System.out.println("menor"+menor);
// return(menor);
}

public static void mayorDato(int carga[]) {
int mayor = 0;
carga=new int [5];
for (int i=0;i<carga.length;i++){
for (int j=1;j<carga.length;j++)
{

if (carga[i]>carga[j])
{
mayor=carga[j];
carga[i]=mayor;
}
}
}
System.out.println("mayor"+mayor);
}
public static void ordenarDato() {
int ordenado = 0;
carga=new int [5];
for (int i=0;i<carga.length;i++)
{
for (int j=1;j<carga.length;j++)
{
if (carga[i]>carga[j])
{
ordenado=carga[i];
carga[i]=carga[j];
carga[j]=ordenado;
}
}

//return (ordenado);

}
for (int j=1;j<carga.length;j++)
{
System.out.println("vector de menor a mayor"+carga[j]);
}
}
public static void main(String args[]){
ingresarDatos();
menorDato(carga);
mayorDato(carga);
ordenarDato();
}

}

santos.r09
03 de Septiembre del 2009
NECESITAS USAR UN ARREGLO AUXILIAR PARA EVITAR MODIFICAR EL ARREGLO ORIGINAL, AUN FALTA EL QUE LOS ORDENA DE MENOR A MAYOR.
CREO SERÍA MAS FACIL UTILIZAR ARRAYLIST Y SUS METODOS.

import javax.swing.JOptionPane;

public class Menornumero {
static int carga[]=new int [5];

public static int[] ingresarDatos() {

carga=new int [5];
for (int i=0;i<=4;i++)
{
String num = JOptionPane.showInputDialog(null, "ingrese el numero"+i);
int numero=Integer.parseInt(num);
carga[i]=numero;
}

for (int i=0;i<=4;i++)
{
System.out.println("numero"+ carga[i]);
}
return carga;


} // Metodo ingresarDatos

public static void menorDato(int carga[]) {
int menor = 0;
int[] arrAux = new int[5];
for (int x=0;x<carga.length;x++){
arrAux[x] = carga[x];
}

for (int i=0;i<carga.length;i++){
for (int j=1;j<arrAux.length;j++){

if (carga[i]<arrAux[j])
{
menor=carga[i];
arrAux[j]=menor;
}// if

} //for
}//for

System.out.println("menor"+menor);
}

public static void mayorDato(int carga[]) {
int mayor = 0;
int[] arrAux = new int[5];
for (int x=0;x<carga.length;x++){
arrAux[x] = carga[x];
}
for (int i=0;i<carga.length;i++){
for (int j=1;j<arrAux.length;j++)
{

if (carga[i]>arrAux[j])
{
mayor=carga[i];
arrAux[j]=mayor;

} //if
}//for
}//for

System.out.println("MAYOR"+mayor);
}

public static void ordenarDato() {
int ordenado = 0;
int[] arrAux = new int[5];
int[] arrOrd = new int[5];
int cont=0;
for (int x=0;x<carga.length;x++){
arrAux[x] = carga[x];
}
for (int i=0;i<carga.length;i++)
{
for (int j=1;j<arrAux.length;j++)
{

if (carga[i]<arrAux[j])
{
ordenado=carga[i];
arrAux[j]=ordenado;
arrOrd[cont]=ordenado;
System.out.println("contador if "+cont);
}//if
}//for
cont++;
System.out.println("contador "+cont);
}//for
for (int j=0;j<arrOrd.length;j++)
{
System.out.println("vector de menor a mayor"+arrOrd[j]);
}
}// Metodo ordeanDato
public static void main(String args[]){
ingresarDatos();
menorDato(carga);
mayorDato(carga);
ordenarDato();
}//main

}//class

Leonardo
03 de Septiembre del 2009
Hola, una forma mas simple de hacerlo es utilizar ArrayList.

// creas la lista
List<Integer> lista = new ArrayList<Integer>();


// si queres agregar un numero a la lista haces

lista.add(5); // el entero que queiras agregar

y para ordenar la lista

Collections.sort(lista); // lo ordena de menor a mayot


si queres sacar el mayor numero:
lista.get(lista.size()-1)

el menor
lista.get(0),

es mas simple, espero haberte ayudado

Te invito a que participes de http://www.runit.com.ar y veas los tutoriales, consultes tus dudas y crees tus comunidades.
Saludos!