Omar_Natour

Natour, O. 9/16/16 Csc-220 Ugly Numbers

Sep 17th, 2016
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.17 KB | None | 0 0
  1. /*
  2.  * Omar Natour
  3.  * 9/16/2016
  4.  * Csc-220 Data Structures
  5.  * Hw1 Ugly Number Table
  6.  * Take in a starting and ending range and display all ugly numbers within that range.
  7.  * Ojnatour0001@student.stcc.edu
  8.  */
  9.  
  10. import java.util.ArrayList;
  11. import javafx.application.Application;
  12. import javafx.event.ActionEvent;
  13. import javafx.event.EventHandler;
  14. import javafx.geometry.Pos;
  15. import javafx.scene.*;
  16. import javafx.scene.control.Button;
  17. import javafx.scene.control.TextArea;
  18. import javafx.scene.control.TextField;
  19. import javafx.scene.layout.BorderPane;
  20. import javafx.scene.layout.HBox;
  21. import javafx.scene.paint.Color;
  22. import javafx.scene.text.Text;
  23. import javafx.stage.Stage;
  24.  
  25. public class UglyNumbers extends Application {
  26.     public static void main(String[] args) {
  27.         launch(args);
  28.     }
  29.  
  30.     static TextArea taOut = new TextArea();
  31.  
  32.     public void start(Stage primaryStage) {
  33.  
  34.         BorderPane Gui = new BorderPane();
  35.  
  36.         Gui.setTop(intro());
  37.         Gui.setCenter(header());
  38.         Gui.setBottom(output());
  39.  
  40.         Scene sce = new Scene(Gui, 650, 300, Color.BLUE);
  41.  
  42.         primaryStage.setTitle("Ugly Numbers");
  43.         primaryStage.setScene(sce);
  44.         primaryStage.show();
  45.         primaryStage.setResizable(false);
  46.     }
  47.  
  48.     private Node intro() {
  49.         HBox hbIntro = new HBox();
  50.         hbIntro.setPrefHeight(10);
  51.  
  52.         Text tIntro = new Text(
  53.                 "Enter the starting and ending value for the range of numbers to be searched for ugly numbers.");
  54.  
  55.         hbIntro.setAlignment(Pos.CENTER);
  56.         hbIntro.getChildren().add(tIntro);
  57.         return hbIntro;
  58.     }
  59.  
  60.     private Node header() {
  61.  
  62.         HBox HBtopper = new HBox(10);
  63.  
  64.         TextField tfStart = new TextField();
  65.         TextField tfEnd = new TextField();
  66.         Text tStart = new Text("Start:");
  67.         Text tEnd = new Text("End:");
  68.  
  69.         Button btGo = new Button("GO!");
  70.  
  71.         EventHandler<ActionEvent> Go = e -> {
  72.             String sStart = tfStart.getText();
  73.             String sEnd = tfEnd.getText();
  74.  
  75.             int iStart;
  76.             int iEnd;
  77.  
  78.             if (sStart.matches("(\\d+)") && sEnd.matches("(\\d+)")) {
  79.                 iStart = Integer.parseInt(sStart);
  80.                 iEnd = Integer.parseInt(sEnd);
  81.                 findUglys(iStart, iEnd);
  82.             } else {
  83.                 taOut.setText("You've made a grave mistake");
  84.             }
  85.         };
  86.  
  87.         btGo.setOnAction(Go);
  88.  
  89.         HBtopper.setAlignment(Pos.CENTER);
  90.         HBtopper.getChildren().addAll(tStart, tfStart, tEnd, tfEnd, btGo);
  91.  
  92.         return HBtopper;
  93.     }
  94.  
  95.     private Node output() {
  96.  
  97.         HBox HBmiddle = new HBox();
  98.  
  99.         taOut.setPrefColumnCount(40);
  100.         taOut.setPrefHeight(200);
  101.  
  102.         HBmiddle.setAlignment(Pos.CENTER);
  103.         HBmiddle.getChildren().add(taOut);
  104.  
  105.         return HBmiddle;
  106.     }
  107.  
  108.     ///////// GUI//////////^^^
  109.     //////// LOGIC/////////vvv
  110.  
  111.     // Professor Silvestri's prime number identification method, taken from his
  112.     // method library.
  113.     public static boolean isPrime(int number) {
  114.  
  115.         int upperFactorLimit = (int) Math.sqrt(number);
  116.  
  117.         for (int divisor = 2; divisor <= upperFactorLimit; divisor++) {
  118.             if (number % divisor == 0)
  119.                 return false;
  120.         }
  121.         return true;
  122.     }
  123.  
  124.     static ArrayList<Integer> findFactors(int factoree) {
  125.  
  126.         ArrayList<Integer> factors = new ArrayList<Integer>();
  127.  
  128.         for (int i = 1; i <= factoree; i++) {
  129.             if (factoree % i == 0)
  130.                 factors.add(i);
  131.         }
  132.         return factors;
  133.     }
  134.  
  135.     static ArrayList<Integer> findPrimeFactors(ArrayList<Integer> factors) {
  136.  
  137.         ArrayList<Integer> primeFactors = new ArrayList<Integer>();
  138.  
  139.         for (int i = 0; i < factors.size(); i++) {
  140.             if (isPrime(factors.get(i)) || factors.get(i) == 1)
  141.                 primeFactors.add(factors.get(i));
  142.         }
  143.         return primeFactors;
  144.     }
  145.  
  146.     static boolean isUgly(int num) {
  147.  
  148.         ArrayList<Integer> primeFactors1 = findPrimeFactors(findFactors(num));
  149.  
  150.         if (primeFactors1.size() <= 0) {
  151.             return false;
  152.         }
  153.  
  154.         for (int i = 0; i < primeFactors1.size(); i++) {
  155.             int current = primeFactors1.get(i);
  156.  
  157.             if ((current != 2 && current != 3 && current != 5 && current != 1))
  158.                 return false;
  159.         }
  160.         return true;
  161.     }
  162.  
  163.     static void findUglys(int start, int end) {
  164.  
  165.         String Uglys = "";
  166.         int count = 0;
  167.  
  168.         for (int i = start; i <= end; i++) {
  169.             if (isUgly(i)) {
  170.                 count++;
  171.                 if (count % 5 == 0) {
  172.                     Uglys += String.format("%-6d", i);
  173.                     Uglys += ("\n");
  174.                 } else
  175.                     Uglys += String.format("%-6d", i);
  176.             }
  177.  
  178.         }
  179.         taOut.setText(Uglys);
  180.     }
  181.  
  182. }
Add Comment
Please, Sign In to add comment