2017-03-02 60 views
0

我一直在学习过去一个月的Java,并且我的分支超出了我班的学习范围,并决定开始制作一个包含各种转换计算器的GUI程序。但是,有一个给我带来麻烦。这对我来说似乎很简单,但由于某种原因,它不起作用。JavaFXML援助 - 硬币计数器

我想要做的就是当我点击转换按钮时,程序会将美元数额转换为宿舍,硬币,镍币和便士,其中便士将是可能的最低金额。我通过一个与我的主类相关的控制器类来配置它。下面附上了我的代码。谢谢!

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

什么exectly isn't工作的代码?你期望什么?看看你的代码,我认为,“ConvertDollars”方法(你应该按照惯例命名为小写的“c”)被调用,并且你看不到任何结果。这是因为你只将结果赋给一个局部变量。您必须将计算结果放入文本字​​段中。 – Schlangguru

+0

当我转换美元时​​,程序将quartersText的文本设置为0,dimesText为1,nickelsText为1,penniesText为0.相反,当我在输入美元金额后点击按钮时,用尽可能多的硬币填充各种硬币文本字段,其中便士是剩下的所有其他硬币。所以基本上,宿舍然后硬币,然后镍币然后便士。我可以让程序在控制台中工作,但不在GUI中,它们的设置完全相同。 –

+0

我是否正确:您插入1美元的结果是获得输出0个季度,1个角钱,1个镍币和0个便士吗? – Schlangguru

回答

0

指控制研究

/* 
 
* 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)); 
 
    } 
 
    } 
 
     
 
    
 
}