Atomic Reference Not Changing

My Atomic Reference is not changing when the user inputs an expression of numbers. I think it has something to do with the lines inside of my Verify button event handler at card1.CardValue() == (int)expInput.get(0) but I'm not sure how to fix this. I tried placing deck.get(0).CardValue() but the method isn't working for that. Could I place my deck somewhere else to make this work? Here is my code:

import javafx.application.Application; import javafx.event.ActionEvent; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.image.Image; import javafx.scene.layout.BorderPane; import javafx.scene.layout.HBox; import javafx.scene.layout.Pane; import javafx.stage.Stage; import javafx.scene.image.ImageView; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.concurrent.atomic.AtomicReference; public class Main extends Application { @Override public void start(Stage primaryStage) { ArrayList<Integer> deck; deck = new ArrayList<>(); int i = 1; while(i < 52){ deck.add(i); i++; } final AtomicReference<String> result = new AtomicReference<>("go."); Collections.shuffle(deck); BorderPane pane = new BorderPane(); HBox top = new HBox(10); Label display = new Label(result.toString()); Button btShuffle = new Button("Shuffle"); top.getChildren().add(display); top.getChildren().add(btShuffle); HBox center = new HBox(10); Card card1 = new Card(deck.get(0)); center.getChildren().add(card1); Card card2 = new Card(deck.get(1)); center.getChildren().add(card2); Card card3 = new Card(deck.get(12)); center.getChildren().add(card3); Card card4 = new Card(deck.get(14)); center.getChildren().add(card4); btShuffle.setOnAction( e -> { Collections.shuffle(deck); center.getChildren().clear(); center.getChildren().add(new Card(deck.get(0))); center.getChildren().add(new Card(deck.get(1))); center.getChildren().add(new Card(deck.get(2))); center.getChildren().add(new Card(deck.get(3))); }); HBox bottom = new HBox(10); Label expression = new Label("Please Enter the expression: "); TextField tfExpress = new TextField(); ArrayList<Character> signs = new ArrayList<>(); signs.add('/'); signs.add('+'); signs.add('('); signs.add(')'); signs.add('-'); signs.add('^'); signs.add('*'); signs.add('%'); String str = tfExpress.getText(); int express = (str != null && !"".equals(str)) ? Integer.parseInt(str) : -1; // expInput.removeIf(p-> p.equals(signs)); Button btVerify = new Button("Verify"); bottom.getChildren().add(expression); bottom.getChildren().add(tfExpress); bottom.getChildren().add(btVerify); btVerify.setOnAction( (ActionEvent e) -> { LinkedList<Character> expInput = new LinkedList<Character>(); for(char c: tfExpress.getText().toCharArray()){ expInput.add(c); } expInput.removeIf(p-> p.equals(signs)); if(card1.CardValue() == (int)expInput.get(0) && card2.CardValue() == (int)expInput.get(1) && card3.CardValue() == (int)expInput.get(2) && card4.CardValue() == (int)expInput.get(3)) { if(express == 24){ result.set("Correct"); } else result.set("Incorrect"); } else result.set("The numbers in the expression don't " + "match the numbers in the set."); }); pane.setTop(top); pane.setCenter(center); pane.setBottom(bottom); Scene scene = new Scene(pane); primaryStage.setTitle("24 card game"); primaryStage.setScene(scene); primaryStage.show(); } public class Card extends Pane { public int cardVal; Card(int card){ Image cardImage; cardImage = new Image("card/"+ card +".png"); getChildren().add(new ImageView(cardImage)); cardVal = card; } public int CardValue(){ int card = 0; if(cardVal <= 13){ card = cardVal; } else if(cardVal > 13 && cardVal <= 26){ card = cardVal - 13; } else if(cardVal > 26 && cardVal <= 39){ card = cardVal - 26; } else if(cardVal > 39 && cardVal <= 52){ card = cardVal - 39; } return card; } } public static void main(String[] args) { launch(args); } }

Category:java Views:1 Time:2018-04-16

Related post

Copyright (C) dskims.com, All Rights Reserved.

processed in 0.234 (s). 11 q(s)