当前位置: 首页 > 知识库问答 >
问题:

如果在处理中按下键

郭彬郁
2023-03-14

我正在尝试制作一个计算贷款利息的简单程序。我这里的代码可以工作,但只会在按下'c'键时显示结果。我如何改变逻辑,以便一旦'c'被按下,结果就会出现在屏幕上。任何的帮助都是非常感谢的。

   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个答案

高奇
2023-03-14

您当前正在draw()方法中检查键是否被按下,如果键当前被按下,则只显示显示利息计算的文本字段。这是什么

if (keyPressed) {
...

正在做什么。更好的方法是重写实际的keyPressed()方法(在draw()之外),并在按下'c'键后设置一个布尔标志。因此,在程序的顶部,您可以创建如下内容:

boolean showInterestText = false;

然后更改两个嵌套的if语句

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

最后,如果按下“C”键,重写keyPressed()方法以将showInterestText设置为true。类似于:

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

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

ps.欢迎来到stackoverflow,下次发帖时请格式化您的代码,使其易于阅读。

 类似资料:
  • 问题内容: 好吧,所以我有4个图像视图。 当他们按下和向上时,我如何控制会发生什么 因此说: 其中一张图像被按下,textview变为1,但是当它们放开时,文本将变为0? 问题答案: 您需要使用OnTouchListener并让它在您的上监听。 例如: 这是一个看起来像的例子:

  • 问题内容: 我正在使用Linux控制台,我想做一个程序,该程序输出随机字符,直到按ESC。如何制作这样的键盘处理器? 问题答案: 从Curses库中获取getch()吗?另外,您将需要使用notimeout()告诉getch()不要等待下一次按键。

  • 我正在开发一个需要

  • 我正在使用JFrame、JPanel、JButton和actionListener编写一个游戏,我希望有一个按钮,按下后重新启动游戏。基本上,我希望当前Jframe关闭并重新打开一个新的Jframe。我希望它像一个按钮,你按下开始一个新的游戏。这是我的密码: actionListener: 谢谢你抽出时间。

  • 问题内容: 如何处理Java中的同时按键? 我正在尝试编写游戏,并且需要一次处理多个按键。 当我按住一个键(假设向前移动),然后按住另一个键(例如,向左转)时,将检测到新键,但不再检测到旧键。 问题答案: 一种方法是跟踪自己当前按下了哪些键。 当您收到keyPressed事件时,将新键添加到列表中;当您收到keyReleased事件时,请从列表中删除密钥。 然后,在游戏循环中,您可以根据按键列表中