java作业问题_Java作业问题

如果你的老师使用这个练习来帮助你学习If语句,那么你需要在基本案例之前考虑更复杂的案例。

要知道,如果框{1,2,3,4}都被选中,但是您首先对框{1}执行复选,那么无论选中多少框,您都只能显示Frame9。尝试重新排列您的if结构以检查是否所有4个都被选中,然后如果任何3个都被选中,然后返回到各个框的最后一个if/else语句。

if(all 4 checked)

else if (any 3 checked)

else if (any 2 checked)

else if (any 1 checked)

第二种选择可能比你的家庭作业或已经学过的东西要多一些。但是考虑初始化HashMap中的各种状态吗?然后,当选中某个按钮时,返回并选中每个复选框的状态。如果选中此框,则设置某种形式的标志(按位操作在此处很有效)。完成此操作后,可以在hashmap中执行查找以检索正确的类。

积极的是较少的if语句来决定你的行动方针,消极的是更多的内存和增加的初始化时间。

e、 假设所有的“新框架”都是扩展JFrame的类。如果在按钮上创建操作侦听器,则可以具有以下全局变量

HashMap> frameName = null;

然后在调用构造函数时,填充HashMap

frameName = new HashMap>();

frameName.put(1<<0, Frame9.class); //only the first box is checked

//Box 2,3 and 4 checked, resulting in 1110 (binary) which stores

//in the hashmap as 14

frameName.put(1<<1 | 1<<2 | 1<<3, Frame21.class);

//add this for all 15 options.

单击复选框后,可以填充状态并在HashMap表中执行查找。假设默认操作是创建给定的JFrame并显示它。

public void actionPerformed(ActionEvent e) {

JFrame myNewFrame = null;

int state = 0;

if(e.getSource() instanceof JCheckBox){

if(((JCheckBox)e.getSource()).isSelected()){

if(cb1.isSelected())

state |= 1<<0; // 1b

if(cb2.isSelected())

state |= 1<<1; // 10b

if(cb3.isSelected())

state |= 1<<2; // 100b

if(cb4.isSelected())

state |= 1<<3; // 1000b

try {

myNewFrame = frameName.get(state).newInstance();

myNewFrame.setVisible(true);

} catch (Exception ex) {

ex.printStackTrace();

}

}

}

}

这绝不是最理想的解决方案,但它确实有助于减少解决方案中嵌套if语句的数量,并使其更具可读性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值