2016-12-07 55 views
0

我试图做一个简单的程序来计算贷款利息。我在这里的代码有效,但只会在'c'键被按下时显示结果。我如何改变逻辑,以便一旦按下'c',结果就会出现在屏幕上。先进的任何帮助表示赞赏。如果keyPressed在处理

import controlP5.*; 
ControlP5 cp5; 
Textfield loan; 
Textfield interest; 
Textfield months; 
Button calculate; 
Double loan1; 
Double months1; 
double interest1; 
void setup(){ 
size(700,400); 
PFont font = createFont("arial",20); 
cp5 = new ControlP5(this); 
loan = cp5.addTextfield("Loan Amount") 
.setPosition(20,100) 
.setSize(200,40) 
.setFont(font) 
.setFocus(true) 
.setColor(color(255,0,0)); 
loan.setInputFilter(ControlP5.INTEGER) 
;   
    interest = cp5.addTextfield("Interest Rate") 
.setPosition(20,190) 
.setSize(200,40) 
.setFont(font) 
.setFocus(false) 
.setColor(color(255,0,0)); 
interest.setInputFilter(ControlP5.INTEGER) 
; 
    months = cp5.addTextfield("Length in months") 
.setPosition(450,100) 
.setSize(200,40) 
.setFont(font) 
.setFocus(false) 
.setColor(color(255,0,0)); 
months.setInputFilter(ControlP5.INTEGER) 
; 
    } 
void draw(){ 
background(120); 
fill(255); 
noStroke(); 
rect(0,0,750,70); 
fill(20); 
textSize(32); 
text("Monthly Loan Repayment Calculator ", 70, 45); 
fill(41,194,214); 
ellipse(340,170,130,130); 
fill(24,74,140); 
ellipse(340,170,125,125); 
fill(255); 
textSize(18); 
text("Enter 'c'",305,155); 
text("to calculate", 295,175); 
fill(0); 
rect(0,260,700,1); 

String loan2 =  loan.getText(); 
String interest2 = interest.getText(); 
String months2 = months.getText(); 

if(keyPressed) 
{ 
    if(key=='c'||key=='C'&&!loan2.equals("")&&!interest2.equals("")&&!months2.equals   ("")){ 
loan1 = Double.parseDouble(loan2); 
interest1 = Double.parseDouble(interest2); 
months1 = Double.parseDouble(months2); 

interest1=interest1/100/12; 
double payment = (loan1*interest1)/(1-Math.pow(interest1+1,-months1)); 
payment = (double)Math.round(payment*100)/100; 
//println(payment); 
//text(payment,20,20); 

int total = (int)payment; 

text(total,200,350); 
    } 


} 
} 

回答

1

您当前的平局中,如果按一个键或检查()方法不是只有显示出如果该键被按下目前的利息计算文本字段。这是什么

if (keyPressed) { 
... 

正在做。更好的方法是覆盖实际的keyPressed()方法(draw()之外),并在按下'c'键后设置布尔标志。因此,在你的程序的顶部你创造的东西,如:

boolean showInterestText = false; 

然后你会改变你的两个嵌套的if语句

if(keyPressed) 
{ 
    if(key=='c'||key=='C'&&!loan2.equals("")&&!interest2.equals("")&&!months2.equals   ("")){ 
... 

到一个单一的if语句像

if (showInterestText) { 
... 

最后,如果按下'c'键,则覆盖keyPressed()方法将showInterestText设置为true。例如:

void keyPressed() { 
    if (key == 'c' || key == 'C') { 
     showInterestText = true; 
    } 
} 

这样,showInterestText布尔值在键不再被按下后仍然为真。

PS。欢迎使用stackoverflow,下次您发布时请格式化您的代码,以使其可读。