Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.Dimension;
- import java.awt.FlowLayout;
- import java.awt.Toolkit;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.util.ArrayList;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JOptionPane;
- import javax.swing.JTextField;
- public class Sarmiento_Josephus {
- JFrame frame;
- JButton solveButton;
- JTextField numTF, intervTF;
- JLabel numLabel, intervLabel;
- public static void main(String[] args) {
- Sarmiento_Josephus app = new Sarmiento_Josephus();
- app.initialize();
- }
- public void buttonActionPerformed(ActionEvent evt) {
- int num, interv, survivor;
- num = Integer.parseInt(numTF.getText());
- interv = Integer.parseInt(intervTF.getText());
- survivor = findSurvivor(num, interv);
- JOptionPane.showMessageDialog(frame, "The survivor is: " + survivor, "Survivor", JOptionPane.PLAIN_MESSAGE);
- }
- public int findSurvivor(int num, int interv) {
- ArrayList<Integer> list = new ArrayList<Integer>();
- int current1 = interv, current2;
- for(int i = 1; i <= num; i++)
- list.add(i);
- while(list.size() > 0) {
- int burier;
- current1 = checkCurrent(current1, list.size(), interv);
- list.remove(current1-1);
- current2 = current1;
- current2 += interv;
- current2 = checkCurrent(current2, list.size(), interv);
- burier = list.get(current2-1);
- list.add(current1-1, burier);
- current1 += interv;
- }
- return list.get(0);
- }
- public int checkCurrent(int current, int size, int interv) {
- while(current > size) {
- current -= size;
- }
- return current;
- }
- public void initialize() {
- //initialize the components
- frame = new JFrame("Franz Sarmiento's Endterm Project");
- solveButton = new JButton("Solve!");
- numLabel = new JLabel("Enter the number of people:");
- numTF = new JTextField();
- intervLabel = new JLabel("Enter the interval:");
- intervTF = new JTextField();
- //set attributes of the GUI
- frame.setPreferredSize(new Dimension(640, 480));
- frame.setResizable(false);
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.getContentPane().setLayout(new FlowLayout());
- numTF.setPreferredSize(new Dimension(50, 20));
- intervTF.setPreferredSize(new Dimension(50, 20));
- //add the event listener
- solveButton.addActionListener(
- new ActionListener() {
- public void actionPerformed(ActionEvent evt) {
- buttonActionPerformed(evt);
- }
- }
- );
- //set frame to start in the center
- Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
- int w = frame.getSize().width;
- int h = frame.getSize().height;
- int x = (dim.width-w)/4;
- int y = (dim.height-h)/4;
- frame.setLocation(x, y);
- //add the components to the pane
- frame.getContentPane().add(numLabel);
- frame.getContentPane().add(numTF);
- frame.getContentPane().add(intervLabel);
- frame.getContentPane().add(intervTF);
- frame.getContentPane().add(solveButton);
- //finalize the GUI
- frame.pack();
- frame.setVisible(true);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement