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

为什么我所有的if语句都同时触发?(Java)[重复]

傅朝
2023-03-14

我的java小程序分配有问题。出于某种我无法理解的原因,每当我选中复选框时,我的所有if语句都会立即触发。程序应该更新总价,并在每次按下方框时通知用户。我们必须使用复选框,而不是单选按钮或JCheckBox,并且程序必须编写为小程序。这里是我的代码链接。

// Classes
import java.awt.*;                                                                                              
import java.applet.*;                                                                                           
import java.awt.event.*;                                                                                         


@SuppressWarnings("serial")                                                                                     
public class ReasonableComputersChristiansen extends Applet implements ItemListener                             
{
// Variables
        Image logo;                                                                                              
        double basePrice;                                                                                       

        Label companyLabel = new Label("Reasonable Computers");                                                 
        Label instructionLabel = new Label("Please select your desired peripherals from the list below");       
        Label outputLabel = new Label("TOTAL PRICE: ");                                                         

        Checkbox printerBox = new Checkbox("Ink Waster 9000");                                                  
        Checkbox monitorBox = new Checkbox("EvilCorp Monitor");                                                 
        Checkbox keyboardBox = new Checkbox("Clickity-Clackity Keyboard");                                      
        Checkbox mouseBox = new Checkbox("Worst-Aim Laser Gaming Mouse");                                       
        Checkbox joystickBox = new Checkbox("Crash and Burn X-2 Joystick");                                     
        Checkbox webcamBox = new Checkbox("Not-So-Anonymous Webcam");                                           


// Components
    public void init()                                                                                          
        {
        add(companyLabel);                                                                                      
        add(instructionLabel);                                                                                  
        add(printerBox);                                                                                        
        printerBox.addItemListener(this);                                                                       
        add(monitorBox);                                                                                        
        monitorBox.addItemListener(this);                                                                       
        add(keyboardBox);                                                                                       
        keyboardBox.addItemListener(this);                                                                      
        add(mouseBox);                                                                                          
        mouseBox.addItemListener(this);                                                                         
        add(joystickBox);                                                                                       
        joystickBox.addItemListener(this);                                                                      
        add(webcamBox);                                                                                         
        webcamBox.addItemListener(this);                                                                        
        add(outputLabel);                                                                                       
        logo = getImage(getDocumentBase(), "logo.gif");                                                         
        }

// Actions
    public void itemStateChanged(ItemEvent e)                                                                   
        {
        basePrice = 575.00;                                                                                     

        if (printerBox.getState());                                                                             
            {
            basePrice += 69.99;                                                                                 
            System.out.println("Printer added!");                                                               
            }
        if (monitorBox.getState());                                                                             
            {
            basePrice += 125.49;                                                                                
            System.out.println("Monitor added!");                                                               
            }
        if (keyboardBox.getState());                                                                            
            {
            basePrice += 55.59;                                                                                 
            System.out.println("Keyboard added!");                                                              
            }
        if (mouseBox.getState());                                                                               
            {
            basePrice += 19.99;                                                                                 
            System.out.println("Mouse added!");                                                                 
            }
        if (joystickBox.getState());                                                                            
            {
            basePrice += 224.97;                                                                                
            System.out.println("Joystick added!");                                                              
            }
        if (webcamBox.getState());                                                                              
            {
            basePrice += 99.19;                                                                                 
            System.out.println("Webcam added!");                                                                
            }
        }
// Output
    public void output()                                                                                        
        {
            outputLabel.setText("TOTAL PRICE: $" + (basePrice));                                                
    }
}

共有1个答案

俞新翰
2023-03-14

您的if语句后面不应该有分号。

更正代码:

public void itemStateChanged(ItemEvent e)                                                                   
    {
    basePrice = 575.00;                                                                                     

    if (printerBox.getState())                                                                            
        {
        basePrice += 69.99;                                                                                 
        System.out.println("Printer added!");                                                               
        }
    if (monitorBox.getState())                                                                            
        {
        basePrice += 125.49;                                                                                
        System.out.println("Monitor added!");                                                               
        }
    if (keyboardBox.getState())                                                                         
        {
        basePrice += 55.59;                                                                                 
        System.out.println("Keyboard added!");                                                              
        }
    if (mouseBox.getState())                                                                            
        {
        basePrice += 19.99;                                                                                
        System.out.println("Mouse added!");                                                                 
        }
    if (joystickBox.getState())                                                                         
        {
        basePrice += 224.97;                                                                                
        System.out.println("Joystick added!");                                                              
        }
    if (webcamBox.getState())                                                                            
        {
        basePrice += 99.19;                                                                                 
        System.out.println("Webcam added!");                                                                
        }
    }

分号结束您的if语句,因此它们实际上不会影响代码运行的内容。

等等,那么大括号会不会导致语法错误呢?

没有。就Java而言,您可以仅为组织使用大括号,它们不会引发语法错误。在大多数情况下,你应该这样做吗?不,但你能做到吗?从技术上讲,是的。

(如安迪·特纳所述,“在大多数情况下”的注意事项是,当您需要有意将变量置于特定范围内时)

 类似资料:
  • 我制作了这个简单的GUI程序,它可以计算特定字符序列的元音和辅音。计数器还可以,但是我对if-else语句有一个问题,当那个字符既不是元音也不是辅音时,我必须显示一条消息...代码如下: 它看起来是这样的: 我输入了一个没有任何特殊字符或数字的字符“序列”。但它仍然显示消息,其中它有元音和辅音以外的其他字符。if-else语句有问题吗?感谢您的帮助:)

  • if语句以结尾,这是我的错误,被打印出来,即使很明显这两个值都为null。有人能解释为什么吗?

  • 可能重复:if语句末尾有分号 我在编程时,在代码中发现了一个bug,这是因为“if”语句后面有一个分号,它的长方体“{xxx}”被执行时就好像它有自己的作用域一样--所以一切都会被编译。 这回避了一个问题,为什么是: Java中的一个可能的语句,它似乎是一行无用的代码,可能会产生很多bug等等。

  • 我有一个脚本,当只有某些工作表打开时,我想在打开时运行它,但在绑定脚本的电子表格中没有其他工作表。所需的所有工作表的名称都为“代理报告-‘NameOfAgent’”。每个代理报告中还包含某些单元格,可用于IF条件语句。从逻辑上讲,我希望: 如果活动工作表的名称包含“代理报告”- 或者,如果处于活动工作表单元格A2==“角色”- 谢谢你的帮助。

  • 首先,我发现了另外两条有类似问题的线索。问题在于,他们没有为字符串使用正确的等号,也没有为他们的特定问题正确设置if语句的格式。 在我的任务中,我需要创建一个名为“猪”的游戏,玩家与计算机对决,在掷骰子时先获得100分。如果玩家在一个回合中掷1,他们不会得到额外的分数。如果玩家掷两个1,那么他们将失去所有分数。我还没有对电脑的回合进行编码,只是专注于玩家。请告诉我我做错了什么。提前非常感谢。 我的

  • 问题内容: 如果MySQL触发器中有多个if语句,那么最佳方法是什么? 目前,我的SQL如下所示: 乍看之下,这似乎行得通。但是,我注意到,当多个(else)if语句为true时,仅第一个语句被执行(例如,就像在PHP中一样)。 我如何只使用多个if,而不必是elseif,以便执行多于1条语句?用相同的动作创建多个触发器是不可能的,至少phpMyAdmin所示。将多个if置于一个触发器中会导致错误