Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.08 KB | None | 0 0
  1. import java.awt.Dimension;
  2. import java.awt.FlowLayout;
  3. import java.awt.Toolkit;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import java.util.ArrayList;
  7.  
  8. import javax.swing.JButton;
  9. import javax.swing.JFrame;
  10. import javax.swing.JLabel;
  11. import javax.swing.JOptionPane;
  12. import javax.swing.JTextField;
  13.  
  14.  
  15. public class Sarmiento_Josephus {
  16.     JFrame frame;
  17.     JButton solveButton;
  18.     JTextField numTF, intervTF;
  19.     JLabel numLabel, intervLabel;
  20.    
  21.    
  22.     public static void main(String[] args) {
  23.         Sarmiento_Josephus app = new Sarmiento_Josephus();
  24.        
  25.         app.initialize();      
  26.     }
  27.    
  28.     public void buttonActionPerformed(ActionEvent evt) {
  29.         int num, interv, survivor;
  30.         num = Integer.parseInt(numTF.getText());
  31.         interv = Integer.parseInt(intervTF.getText());
  32.         survivor = findSurvivor(num, interv);
  33.        
  34.        
  35.         JOptionPane.showMessageDialog(frame, "The survivor is: " + survivor, "Survivor", JOptionPane.PLAIN_MESSAGE);
  36.     }
  37.    
  38.     public int findSurvivor(int num, int interv) {
  39.         ArrayList<Integer> list = new ArrayList<Integer>();
  40.         int current1 = interv, current2;
  41.        
  42.         for(int i = 1; i <= num; i++)
  43.             list.add(i);
  44.        
  45.         while(list.size() > 0) {
  46.             int burier;
  47.             current1 = checkCurrent(current1, list.size(), interv);
  48.             list.remove(current1-1);
  49.             current2 = current1;
  50.             current2 += interv;
  51.             current2 = checkCurrent(current2, list.size(), interv);
  52.             burier = list.get(current2-1);
  53.             list.add(current1-1, burier);
  54.             current1 += interv;
  55.         }
  56.            
  57.         return list.get(0);
  58.     }
  59.    
  60.     public int checkCurrent(int current, int size, int interv) {
  61.         while(current > size) {
  62.             current -= size;
  63.         }
  64.        
  65.         return current;
  66.     }
  67.    
  68.     public void initialize() {
  69.         //initialize the components
  70.         frame = new JFrame("Franz Sarmiento's Endterm Project");
  71.         solveButton = new JButton("Solve!");
  72.         numLabel = new JLabel("Enter the number of people:");
  73.         numTF = new JTextField();
  74.         intervLabel = new JLabel("Enter the interval:");
  75.         intervTF = new JTextField();
  76.        
  77.         //set attributes of the GUI
  78.         frame.setPreferredSize(new Dimension(640, 480));
  79.         frame.setResizable(false);
  80.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  81.         frame.getContentPane().setLayout(new FlowLayout());
  82.         numTF.setPreferredSize(new Dimension(50, 20));
  83.         intervTF.setPreferredSize(new Dimension(50, 20));
  84.        
  85.         //add the event listener
  86.         solveButton.addActionListener(
  87.                 new ActionListener() {
  88.                     public void actionPerformed(ActionEvent evt) {
  89.                         buttonActionPerformed(evt);
  90.                     }
  91.                 }
  92.         );
  93.        
  94.         //set frame to start in the center
  95.         Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
  96.         int w = frame.getSize().width;
  97.         int h = frame.getSize().height;
  98.         int x = (dim.width-w)/4;
  99.         int y = (dim.height-h)/4;
  100.         frame.setLocation(x, y);
  101.        
  102.         //add the components to the pane
  103.        
  104.         frame.getContentPane().add(numLabel);
  105.         frame.getContentPane().add(numTF);
  106.         frame.getContentPane().add(intervLabel);
  107.         frame.getContentPane().add(intervTF);
  108.         frame.getContentPane().add(solveButton);
  109.        
  110.         //finalize the GUI
  111.         frame.pack();
  112.         frame.setVisible(true);
  113.     }
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement