Jak napisać aplet losujący liczby

0

Jak napisac aplet który losuje liczby, ilosc liczb -wpisujemy w pole tekstowe i ile ma wylosowac tez w polu tekstowym,potem nam wyswietla np. ciag 5 liczb wylosowanych sposród 100

0

Witam,
czy się różni

ilosc liczb -wpisujemy w pole tekstowe

od

ile ma wylosowac tez w polu tekstowym

?

0

tak:
w jednym polu tekstowym wpisujemy "ile liczb ma wylosować?"
w drugim polu wpisujemy liczbe :"sposród ilu liczb ma losować"
wciskamy button i ma wyswetlic nam liczby wylosowane

0

Za dobry jestem ;-) Ps tylko to nie jest aplet a aplikacja, żebyś nie miała za łatwo i coś musiał dodać od siebie :-D Aha ten przykład losuje bez powtórzeń.

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import java.util.Arrays;
import java.util.Date;
import java.util.Random;
import java.util.Vector;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class TotekAplet extends JFrame {

	public static final long serialVersionUID = 198327928L;

	private JButton generuj;

	private JTextField zIlu;

	private JTextField ile;

	private JLabel zIluLabel;

	private JLabel ileLabel;

	private JTextArea lista;

	private JScrollPane scroll;

	public TotekAplet() {
		setTitle("Generator liczb losowych");
		setSize(300, 350);
		setResizable(false);

		JMenuBar menuBar = new JMenuBar();
		JMenu fileMenu = new JMenu("File");
		JMenuItem fileExitMenuItem = new JMenuItem("Exit");
		JMenuItem fileGenerujMenuItem = new JMenuItem("Generuj");
		fileMenu.add(fileGenerujMenuItem);
		fileMenu.add(fileExitMenuItem);
		menuBar.add(fileMenu);
		setJMenuBar(menuBar);

		JPanel panel = new JPanel();
		panel.setBorder(BorderFactory.createTitledBorder("Parametry"));
		zIlu = new JTextField(2);
		ile = new JTextField(2);
		generuj = new JButton("Generuj");
		zIluLabel = new JLabel("  Z ilu liczb wylosować");
		ileLabel = new JLabel("  Ile liczb wylosować");
		lista = new JTextArea("", 9, 23);
		lista.setEditable(false);
		lista.setLineWrap(true);
		lista.setBackground(this.getBackground());
		lista.setWrapStyleWord(true);
		scroll = new JScrollPane(lista);
		panel.setLayout(new GridLayout(3, 2));
		panel.add(zIluLabel);
		panel.add(zIlu);
		panel.add(ileLabel);
		panel.add(ile);
		JPanel panel1 = new JPanel();
		panel1.add(generuj);
		JPanel panel2 = new JPanel();
		panel2.add(scroll);
		panel2.setBorder(BorderFactory.createTitledBorder("Wynik"));

		fileGenerujMenuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				generujLiczby();
			}
		});

		fileExitMenuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});

		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent we) {
				System.exit(0);
			}
		});

		generuj.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				generujLiczby();
			}
		});

		getContentPane().setLayout(new BorderLayout());
		getContentPane().add(panel, BorderLayout.NORTH);
		getContentPane().add(panel1, BorderLayout.CENTER);
		getContentPane().add(panel2, BorderLayout.SOUTH);
	}

	private void generujLiczby() {
		try {
			int zIlu = Integer.parseInt(this.zIlu.getText());
			int ile = Integer.parseInt(this.ile.getText());
			if (ile <= zIlu) {
				Vector<String> liczby = generuj(zIlu, ile);
				lista.setText("");
				for (int i = 0; i < liczby.size(); i++) {
					lista.append(liczby.get(i) + " ");
				}
			} else {
				JOptionPane.showMessageDialog(this,
						"Ile musi być mniejsze lub równe z ilu");
			}
		} catch (NumberFormatException e) {
			JOptionPane.showMessageDialog(this, "Musisz podać liczby");
		}
	}

	private Vector<String> generuj(int zIlu, int ile) {
		Vector<String> v = new Vector<String>();
		int[] tab = null;
		if (ile <= zIlu) {
			tab = new int[ile];
			Random ran = new Random(new Date().getTime());
			for (int i = 0; i < ile; i++) {
				while (true) {
					int buff = ((buff = ran.nextInt() % zIlu + 1) > 0) ? buff
							: -buff;
					boolean isExist = false;
					for (int j = 0; j < ile; j++)
						if (tab[j] == buff) {
							isExist = true;
							break;
						}
					if (!isExist) {
						tab[i] = buff;
						break;
					}
				}
			}
			Arrays.sort(tab);
			for (int i = 0; i < ile; i++) {
				v.add((String) Integer.toString(tab[i]));
			}
		}

		return v;
	}

	public static void main(String[] args) {
		new TotekAplet().setVisible(true);
	}
}
0

hee, dzieki ci bardzo, aplikacje to juz napisałam, tylko nie wiem jak to zamienić na aplet:(mam juz 2 pola tekstowe ale nijak połaczyc to zeby dzialało

0

Prosto zamiast dziedziczyć po JFrame dziedziczysz po Applet, zamiast kostruktora używasz metody init() i nie używasz metody main :-) Aha i z tego co pamiętam to chyba menu w appletach nie można używać.
Przerobiłem masz:

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.util.Arrays;
import java.util.Date;
import java.util.Random;
import java.util.Vector;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class ApletTotek extends Applet {

	public static final long serialVersionUID = 198327928L;

	private JButton generuj;

	private JTextField zIlu;

	private JTextField ile;

	private JLabel zIluLabel;

	private JLabel ileLabel;

	private JTextArea lista;

	private JScrollPane scroll;

	public void init() {
		setSize(300, 350);
		JPanel panel = new JPanel();
		panel.setBorder(BorderFactory.createTitledBorder("Parametry"));
		zIlu = new JTextField(2);
		ile = new JTextField(2);
		generuj = new JButton("Generuj");
		zIluLabel = new JLabel("  Z ilu liczb wylosować");
		ileLabel = new JLabel("  Ile liczb wylosować");
		lista = new JTextArea("", 9, 23);
		lista.setEditable(false);
		lista.setLineWrap(true);
		lista.setBackground(this.getBackground());
		lista.setWrapStyleWord(true);
		scroll = new JScrollPane(lista);
		panel.setLayout(new GridLayout(3, 2));
		panel.add(zIluLabel);
		panel.add(zIlu);
		panel.add(ileLabel);
		panel.add(ile);
		JPanel panel1 = new JPanel();
		panel1.add(generuj);
		JPanel panel2 = new JPanel();
		panel2.add(scroll);
		panel2.setBorder(BorderFactory.createTitledBorder("Wynik"));

		generuj.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				generujLiczby();
			}
		});

		setLayout(new BorderLayout());
		add(panel, BorderLayout.NORTH);
		add(panel1, BorderLayout.CENTER);
		add(panel2, BorderLayout.SOUTH);
	}

	private void generujLiczby() {
		try {
			int zIlu = Integer.parseInt(this.zIlu.getText());
			int ile = Integer.parseInt(this.ile.getText());
			if (ile <= zIlu) {
				Vector<String> liczby = generuj(zIlu, ile);
				lista.setText("");
				for (int i = 0; i < liczby.size(); i++) {
					lista.append(liczby.get(i) + " ");
				}
			} else {
				JOptionPane.showMessageDialog(this,
						"Ile musi być mniejsze lub równe z ilu");
			}
		} catch (NumberFormatException e) {
			JOptionPane.showMessageDialog(this, "Musisz podać liczby");
		}
	}

	private Vector<String> generuj(int zIlu, int ile) {
		Vector<String> v = new Vector<String>();
		int[] tab = null;
		if (ile <= zIlu) {
			tab = new int[ile];
			Random ran = new Random(new Date().getTime());
			for (int i = 0; i < ile; i++) {
				while (true) {
					int buff = ((buff = ran.nextInt() % zIlu + 1) > 0) ? buff
							: -buff;
					boolean isExist = false;
					for (int j = 0; j < ile; j++)
						if (tab[j] == buff) {
							isExist = true;
							break;
						}
					if (!isExist) {
						tab[i] = buff;
						break;
					}
				}
			}
			Arrays.sort(tab);
			for (int i = 0; i < ile; i++) {
				v.add((String) Integer.toString(tab[i]));
			}
		}

		return v;
	}

	public static void main(String[] args) {
		new TotekAplet().setVisible(true);
	}
}
0

a jak zczytac dane wprowadzone do pola tekstowego?

0

a jak zczytac dane wprowadzone do pola tekstowego?

0

pole.getText()

pozdrawiam

0

a jak taką tablice podpiac do tych pol tekstowych zeby wylosowało liczby po wcisnieciu przycisku??

/ wypełnij tablicę liczbami 1 2 3 . . . n
int[] liczby = new int[n];
for (int i = 0; i < liczby.length; i++)
liczby[i] = i + 1;

   // wybierz k liczb i wstaw je do drugiej tablicy

   int[] wynik = new int[k];
   for (int i = 0; i < wynik.length; i++)
   {  
      // wylosuj indeks z przedziału 0 i n - 1
      int l = (int)(Math.random() * n);

      // wybierz element z wylosowanym indeksem
      wynik[i] = liczby[l];

      // przesuń ostatni element pod wylosowany indeks
      liczby[l] = liczby[n - 1];
      n--;
   }
0

???

0

nie za bardzo rozumiem....

1 użytkowników online, w tym zalogowanych: 0, gości: 1