2017-03-02 4 views
0

Ich habe Java für den letzten Monat gelernt, und ich habe mehr als das, was meine Klasse gelernt hat, verzweigt und beschlossen, ein GUI-Programm zu erstellen, das verschiedene Umwandlungsrechner hat. Es gibt jedoch einen, der mir Probleme bereitet. Es scheint mir so einfach zu sein, aber aus irgendeinem Grund funktioniert es nicht.JavaFXML Assistance - Coin Counter

Was ich tun möchte, ist es, wenn ich auf die Schaltfläche zum Konvertieren klicken, konvertiert das Programm den Dollar-Betrag in Viertel, Groschen, Nickel, Pennies wo Pennies die niedrigste mögliche Menge sein wird. Ich konfiguriere dies über eine Controller-Klasse, die mit meiner Hauptklasse verbunden ist. Ich habe meinen Code unten angehängt. Vielen Dank!

package calculator.coins; 

import javafx.event.ActionEvent; 
import javafx.fxml.FXML; 
import javafx.scene.control.Button; 
import javafx.scene.control.TextField; 

public class CoinsController { 

@FXML 
private Button convertButton; 

@FXML 
private Button resetButton; 

@FXML 
private TextField dollarsText; 

@FXML 
private TextField quartersText; 

@FXML 
private TextField dimesText; 

@FXML 
private TextField nickelsText; 

@FXML 
private TextField penniesText; 

@FXML 
private void ConvertDollars(ActionEvent event) 
{ 
    double monetary_amount, quarters, dimes, nickels, pennies; 
    monetary_amount = Double.parseDouble(dollarsText.getText().toString()); 

    quarters = (monetary_amount/.25); 
    monetary_amount = monetary_amount%.25; 

    dimes = (monetary_amount/.10); 
    monetary_amount = monetary_amount%.10; 

    nickels = (monetary_amount/.05); 
    monetary_amount = monetary_amount%0.05; 

    pennies = (monetary_amount/.01); 
    monetary_amount = monetary_amount%.01; 

    quartersText.setText("" +quarters); 
    dimesText.setText("" +dimes); 
    nickelsText.setText("" +nickels); 
    penniesText.setText("" +pennies); 
} 

@FXML 
private void resetProg(ActionEvent event) 
{ 
    quartersText.setText(""); 
    dimesText.setText(""); 
    nickelsText.setText(""); 
    penniesText.setText(""); 
    dollarsText.requestFocus(); 
} 

}

+1

Was exectly isn't Arbeits? Und was würdest du erwarten? Wenn ich Ihren Code betrachte, gehe ich davon aus, dass die Methode "ConvertDollars" (die Sie konventionell mit einem Kleinbuchstaben "c" benennen sollten) aufgerufen wird und Sie kein Ergebnis sehen. Das liegt daran, dass Sie das Ergebnis nur einer lokalen Variablen zuweisen. Sie müssen das Ergebnis Ihrer Berechnung in ein Textfeld oder etwas einfügen. – Schlangguru

+0

Wenn ich die Dollars umwandle, setzt das Programm den Text der viertelText auf 0, dimesText auf 1, nickelsText auf 1, penniesText auf 0. Stattdessen möchte ich es, wenn ich den Knopf nach der Eingabe meiner Dollar-Betrag klicken wird bevölkerten die verschiedenen Münz-Textfelder mit der größtmöglichen Menge an Münzen, wo Pfennige das sein würden, was von allen anderen übrig geblieben ist. Also im Wesentlichen, Quartiere dann Groschen dann Nickels dann Pennies. Ich kann das Programm in der Konsole aber nicht in der GUI arbeiten lassen und sie sind genau gleich eingerichtet. –

+0

Kann ich es richtig machen: Sie geben 1 Dollar ein und erhalten die Ausgabe 0 Viertel, 1 Groschen, 1 Cent und 0 Cent? – Schlangguru

Antwort

0

verweisen diesen Code von controll

/* 
 
* To change this license header, choose License Headers in Project Properties. 
 
* To change this template file, choose Tools | Templates 
 
* and open the template in the editor. 
 
*/ 
 
package exercise14; 
 

 
import java.net.URL; 
 
import java.util.ResourceBundle; 
 
import javafx.event.ActionEvent; 
 
import javafx.fxml.FXML; 
 
import javafx.fxml.Initializable; 
 
import 
 
     javafx.scene.control.Button; 
 
import javafx.scene.control.Label; 
 
import javafx.scene.control.TextField; 
 
import javafx.scene.image.Image; 
 
import javafx.scene.image.ImageView; 
 

 
/** 
 
* 
 
* @author j 
 
*/ 
 
public class FXMLDocumentController { 
 
    public Label output; 
 
// public int b; 
 
     public int c; 
 
    public Label o2; 
 
    public Label o3; 
 
    public Label o4; 
 
     public int e; 
 
     
 
    public TextField input; 
 
    public void maths(){ 
 
    String j= input.getText(); 
 
    int a =Integer.parseInt(j); 
 
    
 
    if(a>=25){ 
 
     int b=a/25; 
 
     
 
    output.setText(String.valueOf(b));} 
 
    } 
 
    if(a%25>=10) 
 
    { int c=a%25; //17 
 
    int d=c/10; 
 
    
 
    o2.setText(String.valueOf(d)); 
 
    } 
 
    // o3.setText(String.valueOf()); 
 
    if((a%25)%10>=1){ 
 
    int e =(a%25)%10; //7 
 
    int f=e/5; 
 
    o3.setText(String.valueOf(f)); 
 
    } 
 
    
 
    if((((a%25)%10)%5)>=1){ 
 
     int m=((a%25)%10)%5; 
 
     o4.setText(String.valueOf(m)); 
 
    } 
 
    } 
 
     
 
    
 
}