Ayuda con JAVA

#1
Estoy haciendo un programita,tienes que introducir nombres y mostrarlos en un list o textarea con un boton pero eso no es el problema, el problema es ordenarlos con otro boton utilizando el quicksort o shell, me pueden echar la mano con eso porfavor se los agradecería muchísimo
 
#2
No inventes la rueda

import java.util.ArrayList;

import java.util.Collections;





public class Prueba {
public static void main(String[] args) {

String a[] = {"Ramon", "Maria", "Juan"};

ArrayList lista = new ArrayList();

for(int i = 0; i < a.length; i++){

lista.add(a);

}

Collections.sort(lista);

System.out.println(lista);



}

}
 
#4
Porque no posteas el código que tienes, porque con el código que ya te postearon arriba puedes hacer algo. Tambien puedes implementar Comparable o Comparator para hacer tus ordenamientos personales en los JavaBeans
 
#5
Es un applet con un boton de llenar y un list para mostrar lo que se lleno cuando precionas el boton mostrar, quiero que con otro boton se ordene la lista por orden alfabetico con el metodo quicksort y no e podido hacerlo
Codigo
package listado;

import javax.swing.DefaultListModel;

/**
*
* @author Ernest
*/
public class List extends javax.swing.JFrame {
DefaultListModel dlm = new DefaultListModel();


public List() {
initComponents();
}




private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

String nombre=this.jTextField1.getText();
dlm.addElement(nombre);
this.jList1.setModel(dlm);
this.jTextField1.setText("");
this.jTextField1.requestFocus();
}


public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new List().setVisible(true);
}
});
}
 

RyukInside

Bovino maduro
#6
Si ya hiciste que se mostraran los datos en un textarea con un botón, no sé que le encuentras de difícil el agregar un simple método a otro botón.

No tienes bien asimilado el paradigma de la POO, sólo basta invocar un simple método de ordenamiento con el ActionPerfomed.

Si no tienes ni idea busca en Google que hay miles de ejemplos de cómo utilizar JButton de java, una buena página es http://www.java2s.com/

Para tu particular caso, se me ocurre recuperar los datos del textarea y mandar al método de ordenamiento un array con éstos y que te devuelva el mismo array pero ya ordenado. Así de simple.
 
#7
Si ya hiciste que se mostraran los datos en un textarea con un botón, no sé que le encuentras de difícil el agregar un simple método a otro botón.

No tienes bien asimilado el paradigma de la POO, sólo basta invocar un simple método de ordenamiento con el ActionPerfomed.

Si no tienes ni idea busca en Google que hay miles de ejemplos de cómo utilizar JButton de java, una buena página es http://www.java2s.com/

Para tu particular caso, se me ocurre recuperar los datos del textarea y mandar al método de ordenamiento un array con éstos y que te devuelva el mismo array pero ya ordenado. Así de simple.
Muchas gracias por el tip, perdón si es muy tonta mi petición pero no soy un experto ni mucho menos, solo un principiante
 

yao04

Bovino maduro
#8
de hecho esa es la solucion, solo agrega un boton y en un metodo agrega el godigo q t dieron arriba y lo mandas llamar al precionar el boton.
 
#9
Pues a juzgar por el código lo has hecho en Netbeans, así que solo es cuestión de que agregues otro botón y dentro del método que este te genere ordenes los resultados.

No se muy bien cual sea el objetivo de usar el DefaultListModel,pero podrías implementar mejor un Vector si requieres sincronización, aunque a lo mucho creo que podría bastar con ArrayList, así a este le puedes dar un Collections.sort y bastará para que te lo ordene, no se si necesites implementar tu mismo un algoritmo de ordenamiento o a que te refieras con quicksort
 
#10
Entonces como quedaria?? que iria abajo del boton 2 ??
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
la vdd que como soy principiante pues se me dificulta un poco
 
#12
Después de ver un poco el API de java (cosa que seriamente deberías hacer) en la clase DefaultListModel hay un método que te regresa un Enumeration con los objetos que colocaste en el, a través de el puedes obtenerlos uno por uno y colocarlos en un array, en una colección, etc...
Para el algoritmo de ordenamiento ya es de tu cosecha, lo más sencillo que se me ocurre es implementar la interfaz Comparable en tus beans, si es que ocupas beans, o simplemente llamar a Collections.sort que te los ordenará en forma natural, en este caso en orden alfabético.

Creo que es todo lo que necesitas hacer, espero te haya servido.

Saludos
 

ethush

Bovino maduro
#13
Yo te recomendaría preocuparte primeramente por la lógica del programa, despues del diseño y operatividad y por ultimo la seguridad pero al ser un principiante, preocupate por la lógica no importa si haces mucho codigo, lo importante es que entiendas a la perfección como funciona, y usando la lógica, lo que debes hacer es lo siguiente:

- Pides la información en la pantalla, y tienes un boton Aceptar.
- Internamente puedes crear un Array en el que se agreguen los datos al final de la lista esto lo puedes hacer, con la función count() y agregarlos al final o si es dinámico usando la funcion Add(), recordemos que hasta este punto entiendes los arrays asociativos.
- puedes llamar una funcion fnOrdena en la que pasas el Array y la ordenas con la funcion Collections.sort(Array) y la imprimes directamente en el list o en el textarea que quieras con un ciclo for o while.
 
#14
Emmm Gracias la vdd es que si entiendo pero lo que no se hacer es implementar el codigo, con un profesor que casi nunca va y nos pide que nos rasquemos con nuestras uñas es dificil aprender, aun asi e aprendido poco, Me podrian pasar el codigo porfavor?? noe importa el metodo de ordenamiento
 

yao04

Bovino maduro
#15
Emmm Me podrian pasar el codigo porfavor??

Hubieras empezado por ahi, personalmente no t recomiendo q hagas eso, esas cosas de q t pasen el codigo y q segun luego lo comprendes y ya aprendes es una mentira, no hay mas como ponerte a programar, leer, programar, estudiar, practicar, programar.....o como lo kieras llamar, en fin, como el objetivo de este foro es ayudar.... posteate el codigo completo de lo q tienes, vere q puedo hacer al respecto
 
#17
Es la historia clasica de muchas clases de programacion...

QUE EL MAESTRO NO SABE NADA O LO QUE SABE ES DE HACE MAS DE 10 AÑOS.

yo te aconsejo que estudies por tu cuenta, toma el libro de deitel de java o el joyanes y a darle duro por esa parte, pero no seas el tipico wey que sabe muchisimo de un lenguaje que escribe 10000 lineas de codigo pero de ing de sw es un asno, no documenta ni realmente comprende por que hace la aplicacion.

Ser programador es ser el albañil y el arquitecto el analista del sw.

My two cents
 
#18
Hubieras empezado por ahi, personalmente no t recomiendo q hagas eso, esas cosas de q t pasen el codigo y q segun luego lo comprendes y ya aprendes es una mentira, no hay mas como ponerte a programar, leer, programar, estudiar, practicar, programar.....o como lo kieras llamar, en fin, como el objetivo de este foro es ayudar.... posteate el codigo completo de lo q tienes, vere q puedo hacer al respecto
Este es el codigo ya con un boton para mostrar o que introduces en un list, me falta el segundo boton para ordenar, te lo agradeceria muchisimo si me pudieras ayudar y a cualquiera que lo haga

package listado;

import javax.swing.DefaultListModel;

/**
*
* @author Ernest
*/
public class List extends javax.swing.JFrame {
DefaultListModel dlm = new DefaultListModel();


public List() {
initComponents();
}




private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

String nombre=this.jTextField1.getText();
dlm.addElement(nombre);
this.jList1.setModel(dlm);
this.jTextField1.setText("");
this.jTextField1.requestFocus();
}


public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new List().setVisible(true);
}
});
}
 

RyukInside

Bovino maduro
#19
Tu código esta bien, pero esta mal a la vez.

Bien en el sentido que quizá si compila, teniéndolo todo completo. Al menos léxicamente esta bien.
Mal en el sentido, que te apuesto que no sabes ni lo que estás haciendo.

Aprender lleva tiempo. Te recomiendo que dejes de usar NetBeans por ahora y uses algo más sencillo como Notepad o JCreator y te pongas a aprender lo básico. Usa JButtons y JTextFields creándolos a mano, sólo así vas a aprender.

Tu tarea es sencilla, pero debes comprender que el hecho de hacértela solamente te hace daño a ti.

Ya tienes DEMASIADA ayuda en respuestas anteriores. Incluso te dieron los códigos mas importantes. Sólo es cuestión de que sepas unirlos. Si no puedes ni hacer eso, realmente no sabes nada.
 

yao04

Bovino maduro
#20
Ps la verdad no le entendi muy bien a tu codigo, personalmente no me gusta usar el asistente del netBeanas para hacer lo grafico. Lo que hice fue q mejor lo hice desde el principio, esta 100% funcional, pero tiene algunos detalles, de graficos y tal vez alguna q otra cosa, pero lo q kerias q hiciera ya lo hace, ahi lo checas y cualquier cosa, posteas tu inquietud.....no lo documente xq no tengo mucho tiempo, estoy a finales de semestre y los profes me traen en chinga, pero igual si tienes duda t respondo...........sin mas, a continuacion el codigo:


package listado;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import java.util.ArrayList;
import java.util.Collections;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
*
* @author Carlos
*/
public class AppLista extends JFrame {

ArrayList lista = new ArrayList();
private JPanel pan1,pan2;
private JButton botInsert, botOrdena;
private JTextField textInsert;
private JTextArea textaOrd;
private JLabel lInsert;

public AppLista() {
super("Ordenamiento");
setLayout(new BorderLayout());
pan1 = new JPanel();
pan2 = new JPanel();
botInsert = new JButton("Insertar");
botOrdena = new JButton("Ordenar");
textInsert = new JTextField();
textaOrd = new JTextArea(10, 12);
lInsert = new JLabel("Insertar:");
pan1.setLayout(new BoxLayout(pan1, BoxLayout.Y_AXIS));
pan1.add(lInsert);
pan1.add(textInsert);
pan1.add(botInsert);
pan1.add(botOrdena);
pan2.add(textaOrd);
add(pan1, BorderLayout.WEST);
add(pan2, BorderLayout.EAST);
Manejador maneja = new Manejador();
botInsert.addActionListener(maneja);
botOrdena.addActionListener(maneja);
setSize(250, 250);
setLocation(500, 150);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public void inserta(){
String s = textInsert.getText();
lista.add(s);
}
public void ordena(){
Collections.sort(lista);
int x = 0;
String s = "";
while(x<lista.size()){
s = (String)lista.get(x)+"\n";
textaOrd.append(s);
x++;
}
}

private class Manejador implements ActionListener{

public void actionPerformed(ActionEvent e) {
if (e.getSource()==botInsert){
inserta();
textInsert.setText("");
}
if (e.getSource()==botOrdena){
textaOrd.setText("");
ordena();
}
}

}

public static void main(String[] args) {
new AppLista();
}

}
 
Arriba