我在创建按钮的逻辑部分时遇到问题。我已经尝试了很多方法对它进行排序,但我无法想到计算结果。
我想要一种按下按钮的方法,获取文本字段值,进行计算并输出答案。
简单的例子......
无限量的盒子可以容纳10件物品。用户在文本字段中输入一个随机值,表示他拥有的项目数,例如21,然后按一个按钮。
在后台,将执行一种方法,计算用户需要的最小盒数。 (多少单位10)。答案将被设置为标签。
希望你们能提前帮助,谢谢你们。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class jjj implements ActionListener {
static JTextField tf;
JButton b;
static JLabel l2;
static int a;
static int quantity = 0;
static int units = 0;
static String g, s;
static JLabel q, hidden;
public jjj(){
JFrame f = new JFrame();
tf = new JTextField();
tf.setSize(180, 30);
tf.setLocation(10, 30);
b = new JButton("How Many Boxes?");
b.setSize(180, 30);
b.setLocation(10, 70);
b.addActionListener(this);
JLabel l1 = new JLabel("Answer:");
l1.setSize(85, 30);
l1.setLocation(10, 200);
l2 = new JLabel();
l2.setSize(85, 30);
l2.setLocation(105, 200);
hidden = new JLabel();
hidden.setVisible(false);
f.setSize(208, 300);
f.setLayout(null);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
f.add(tf);
f.add(b);
f.add(l1);
f.add(l2);
f.add(hidden);
}
public void Answer(){
hidden.setText(tf.getText());
a = String.valueOf(hidden);
quantity = a;
Calc();
}
public void Calc()
if (quantity <= 100){
units = units + 1;
g = String.valueOf(units);
l2.setText(g);
}
if (quantity > 100){
quantity = quantity - 100;
units = units + 1;
Calc();
}
}
public static void main(String[] args) {
new jjj();
}
@Override
public void actionPerformed(ActionEvent arg0) {
l2.setText(null);
Answer();
}
}
答案 0 :(得分:1)
我不知道你当前的代码是什么,但是使用这样的东西可能就是你想要的:
public static int getNumberOfBoxes(double userInput, double numberOfTotalBoxes) {
return (int)Math.ceil(userInput / numberOfTotalBoxes);
}
Math.ceil
向上舍入,因此21.0/10.0
会产生3
。
如果您的输入是整数,则可以执行以下操作:
public static int getNumberOfBoxes(int userInput, int numberOfTotalBoxes) {
int numberOfBoxes = userInput / numberOfTotalBoxes;
if(userInput % numberOfTotalBoxes != 0)
numberOfBoxes++;
return numberOfBoxes;
}
在第二个例子中,您只需检查分割后是否有余数。如果你还需要一个盒子。