Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Omar Natour
- * 9/16/2016
- * Csc-220 Data Structures
- * Hw1 Ugly Number Table
- * Take in a starting and ending range and display all ugly numbers within that range.
- * Ojnatour0001@student.stcc.edu
- */
- import java.util.ArrayList;
- import javafx.application.Application;
- import javafx.event.ActionEvent;
- import javafx.event.EventHandler;
- import javafx.geometry.Pos;
- import javafx.scene.*;
- import javafx.scene.control.Button;
- import javafx.scene.control.TextArea;
- import javafx.scene.control.TextField;
- import javafx.scene.layout.BorderPane;
- import javafx.scene.layout.HBox;
- import javafx.scene.paint.Color;
- import javafx.scene.text.Text;
- import javafx.stage.Stage;
- public class UglyNumbers extends Application {
- public static void main(String[] args) {
- launch(args);
- }
- static TextArea taOut = new TextArea();
- public void start(Stage primaryStage) {
- BorderPane Gui = new BorderPane();
- Gui.setTop(intro());
- Gui.setCenter(header());
- Gui.setBottom(output());
- Scene sce = new Scene(Gui, 650, 300, Color.BLUE);
- primaryStage.setTitle("Ugly Numbers");
- primaryStage.setScene(sce);
- primaryStage.show();
- primaryStage.setResizable(false);
- }
- private Node intro() {
- HBox hbIntro = new HBox();
- hbIntro.setPrefHeight(10);
- Text tIntro = new Text(
- "Enter the starting and ending value for the range of numbers to be searched for ugly numbers.");
- hbIntro.setAlignment(Pos.CENTER);
- hbIntro.getChildren().add(tIntro);
- return hbIntro;
- }
- private Node header() {
- HBox HBtopper = new HBox(10);
- TextField tfStart = new TextField();
- TextField tfEnd = new TextField();
- Text tStart = new Text("Start:");
- Text tEnd = new Text("End:");
- Button btGo = new Button("GO!");
- EventHandler<ActionEvent> Go = e -> {
- String sStart = tfStart.getText();
- String sEnd = tfEnd.getText();
- int iStart;
- int iEnd;
- if (sStart.matches("(\\d+)") && sEnd.matches("(\\d+)")) {
- iStart = Integer.parseInt(sStart);
- iEnd = Integer.parseInt(sEnd);
- findUglys(iStart, iEnd);
- } else {
- taOut.setText("You've made a grave mistake");
- }
- };
- btGo.setOnAction(Go);
- HBtopper.setAlignment(Pos.CENTER);
- HBtopper.getChildren().addAll(tStart, tfStart, tEnd, tfEnd, btGo);
- return HBtopper;
- }
- private Node output() {
- HBox HBmiddle = new HBox();
- taOut.setPrefColumnCount(40);
- taOut.setPrefHeight(200);
- HBmiddle.setAlignment(Pos.CENTER);
- HBmiddle.getChildren().add(taOut);
- return HBmiddle;
- }
- ///////// GUI//////////^^^
- //////// LOGIC/////////vvv
- // Professor Silvestri's prime number identification method, taken from his
- // method library.
- public static boolean isPrime(int number) {
- int upperFactorLimit = (int) Math.sqrt(number);
- for (int divisor = 2; divisor <= upperFactorLimit; divisor++) {
- if (number % divisor == 0)
- return false;
- }
- return true;
- }
- static ArrayList<Integer> findFactors(int factoree) {
- ArrayList<Integer> factors = new ArrayList<Integer>();
- for (int i = 1; i <= factoree; i++) {
- if (factoree % i == 0)
- factors.add(i);
- }
- return factors;
- }
- static ArrayList<Integer> findPrimeFactors(ArrayList<Integer> factors) {
- ArrayList<Integer> primeFactors = new ArrayList<Integer>();
- for (int i = 0; i < factors.size(); i++) {
- if (isPrime(factors.get(i)) || factors.get(i) == 1)
- primeFactors.add(factors.get(i));
- }
- return primeFactors;
- }
- static boolean isUgly(int num) {
- ArrayList<Integer> primeFactors1 = findPrimeFactors(findFactors(num));
- if (primeFactors1.size() <= 0) {
- return false;
- }
- for (int i = 0; i < primeFactors1.size(); i++) {
- int current = primeFactors1.get(i);
- if ((current != 2 && current != 3 && current != 5 && current != 1))
- return false;
- }
- return true;
- }
- static void findUglys(int start, int end) {
- String Uglys = "";
- int count = 0;
- for (int i = start; i <= end; i++) {
- if (isUgly(i)) {
- count++;
- if (count % 5 == 0) {
- Uglys += String.format("%-6d", i);
- Uglys += ("\n");
- } else
- Uglys += String.format("%-6d", i);
- }
- }
- taOut.setText(Uglys);
- }
- }
Add Comment
Please, Sign In to add comment