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

如何调用从if语句中初始化的变量?[重复]

田巴英
2023-03-14

我是一名It专业的一年级学生。我们的任务是为最终项目的支付系统创建一个概念方案。我们决定做一个工资项目。下面是我使用JOptionFrame和JOptionPane的代码片段

//Wages based on Job Position
    if (JobPositionComboBox.getSelectedItem().equals("Project Manager")){
        double wage = 350.f;
        jTextArea1.append("Total Salary this month : " + df.format(hour * wage) + "\n");
    }
    else if (JobPositionComboBox.getSelectedItem().equals("System Analyst")){
        double wage = 250.f;
        jTextArea1.append("Total Salary this month : " + df.format(hour * wage) + "\n");
    }
    else if (JobPositionComboBox.getSelectedItem().equals("System Developer")){
        double wage = 320.f;
        jTextArea1.append("Total Salary this month : " + df.format(hour * wage) + "\n");
    }
    else if (JobPositionComboBox.getSelectedItem().equals("Quality Assurance")){
        double wage = 220.f;
        jTextArea1.append("Total Salary this month : " + df.format(hour * wage) + "\n");
        
    
    } 
    jTextArea1.append("Payment Option : " + PaymentOptionComboBox.getSelectedItem() + "\n");
    jTextArea1.append("--------------------------------------------");
    
    
    //Payment option information prompts
    if (PaymentOptionComboBox.getSelectedItem().equals("Bank Account")){
       
    String ban = JOptionPane.showInputDialog(null, "Please enter your Bank Account Number", "Payment Option",JOptionPane.PLAIN_MESSAGE);
     int BAN = Integer.parseInt(ban);
        JOptionPane.showMessageDialog(null, "Transaction Information : " +
                "\nName : " + NameTextField.getText()  +
                "\nBank Account Number : " + BAN +        //I can't call on the wage inside the if statements, it just shows an error.
                "\nPayment Amount : " + df.format(hour * wage) +
                "\nPlease Confirm your information","Bank Account", JOptionPane.PLAIN_MESSAGE);
        ImageIcon BDO = new ImageIcon(SystemFrame.class.getResource("BDO.png"));
        JOptionPane.showMessageDialog(null,"Transaction Complete" + 
                "\nThank you for choosing our bank","Bank Account",JOptionPane.PLAIN_MESSAGE,BDO); 
}

由于分配给工资变量的数字取决于工作岗位,我必须从if语句中调用它,以便计算准确。有人有办法吗?

共有1个答案

宇文和同
2023-03-14

请尝试下面的方法,看看是否有效。

double wage; //declaring outside if block as a class variable/member

//Wages based on Job Position
if (JobPositionComboBox.getSelectedItem().equals("Project Manager")){
        wage = 350.f;
        jTextArea1.append("Total Salary this month : " + df.format(hour * wage) + "\n");
    }
    else if (JobPositionComboBox.getSelectedItem().equals("System Analyst")){
        wage = 250.f;
        jTextArea1.append("Total Salary this month : " + df.format(hour * wage) + "\n");
    }
    else if (JobPositionComboBox.getSelectedItem().equals("System Developer")){
        wage = 320.f;
        jTextArea1.append("Total Salary this month : " + df.format(hour * wage) + "\n");
    }
    else if (JobPositionComboBox.getSelectedItem().equals("Quality Assurance")){
        wage = 220.f;
        jTextArea1.append("Total Salary this month : " + df.format(hour * wage) + "\n");
        
    
    } 
    jTextArea1.append("Payment Option : " + PaymentOptionComboBox.getSelectedItem() + "\n");
    jTextArea1.append("--------------------------------------------");
    
    
    //Payment option information prompts
    if (PaymentOptionComboBox.getSelectedItem().equals("Bank Account")){
       
    String ban = JOptionPane.showInputDialog(null, "Please enter your Bank Account Number", "Payment Option",JOptionPane.PLAIN_MESSAGE);
     int BAN = Integer.parseInt(ban);
        JOptionPane.showMessageDialog(null, "Transaction Information : " +
                "\nName : " + NameTextField.getText()  +
                "\nBank Account Number : " + BAN +        //I can't call on the wage inside the if statements, it just shows an error.
                "\nPayment Amount : " + df.format(hour * wage) +
                "\nPlease Confirm your information","Bank Account", JOptionPane.PLAIN_MESSAGE);
        ImageIcon BDO = new ImageIcon(SystemFrame.class.getResource("BDO.png"));
        JOptionPane.showMessageDialog(null,"Transaction Complete" + 
                "\nThank you for choosing our bank","Bank Account",JOptionPane.PLAIN_MESSAGE,BDO); 
}

现有代码的问题是变量作用域。您正试图访问其作用域之外的变量。因此出现了错误。你可以在这里或这里阅读更多关于它的信息

 类似资料:
  • 我是一名It专业的一年级学生。我们的任务是为最终项目的支付系统创建一个概念方案。我们决定做一个工资项目。下面是我使用JOptionFrame和JOptionPane的代码片段 由于分配给工资变量的数字取决于工作职位,为了计算准确,我必须从if语句中调用它。有人有解决方案吗?

  • 问题内容: 我是Python的新手,所以这可能是一个简单的范围界定问题。Python文件(模块)中的以下代码使我有些困惑: 在我使用过的其他语言中,此代码将引发异常,因为该变量是语句的局部变量,不应在该变量之外存在。但是此代码将执行并打印1。任何人都可以解释此行为吗?是否在模块中创建的所有变量都是全局的/可用于整个模块? 问题答案: Python变量的作用域是分配给它们的最里面的函数,类或模块。控

  • 我无法跟踪随机数生成器分配的变量。我尝试生成两个不同范围的随机数,并根据更新分数或不更新分数生成的数字,然后根据一组规则告诉用户他们是赢还是输。 我已经附上了下面的代码,所以你可以看到我在说什么,但我基本上需要变量roll1和roll2的帮助,谢谢你的帮助。

  • 主要内容:变量初始化的标准格式,编译器推导类型的格式,短变量声明并初始化正如上一节《 Go语言变量声明》中提到的 Go语言在声明变量时,自动对变量对应的内存区域进行初始化操作。每个变量会初始化其类型的默认值,例如: 整型和浮点型变量的默认值为 0 和 0.0。 字符串变量的默认值为空字符串。 布尔型变量默认为 bool。 切片、函数、指针变量的默认为 nil。 当然,依然可以在变量声明时赋予变量一个初始值。 回顾C语言 在C语言中,变量在声明时,并不会对变量对应内存区

  • 因为我是android开发新手,所以我不知道如何在使用lateinit变量之前初始化它。在此之前,我尝试过执行,就像这个github中提到的,但没有成功。所以现在我希望问题出在初始化textInput变量上。

  • 好吧,我正在使用字典,例如: 然后我想做的基本上是说,如果“用户”(一个参数)的名称前面有“@”,那么将变量前缀分配为“@”,如果他们的名称前面有“~”,则将变量前缀分配为“~”,如果他们有“ 然后我想说,如果用户的名字前面有“%”,则将前缀变量设置为“%”,否则将其设置为“”(因为这些值只有两个键)。为此,我需要一个if语句,并将其与self进行比较。声音的价值。 分配前缀变量的当前代码 目前,