2016-12-07 13 views
0

私はローンの利子を計算するための簡単なプログラムを作ろうとしています。私がここにあるコードは動作しますが、 'c'キーが押されたときだけ結果を表示します。どのようにロジックを変更して、 'c'を押すと結果が画面に表示されるようにすることができます。どんな援助も先進的に評価されます。処理中にkeyプレスされた場合

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'キーが押されるとブール値フラグを設定することです。あなたはその後、

if (showInterestText) { 
... 
のような場合、単一のステートメントに、あなたの2かのネストされたステートメント

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

を変更したい

boolean showInterestText = false; 

:だからあなたのプログラムの先頭に次のようなものを作成したいです

最後に、 'c'キーが押された場合、showInterestTexttrueに設定するためにkeyPressed()メソッドをオーバーライドします。次のようになります。

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

このように、showInterestTextブール値は、キーが押されなくなった後でもtrueのままです。

PS。ようこそstackoverflowに、あなたが投稿することができるようにあなたのコードを書いてください。

関連する問題