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

如何调用从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变量的作用域是分配给它们的最里面的函数,类或模块。控

  • 一般编程的教材,都是要把所有的变量类型讲完,然后才讲语句。这种讲法,其实不符合学习的特点。学习,就是要循序渐进的。在这点上,我可以很吹一通了,因为我做过教师,研究教育教学,算是有一点心得的。所以,我在这里就开始讲授语句。 什么是语句 在前面,我们已经写了一些.py的文件,这些文件可以用python来运行。那些文件,就是由语句组成的程序。 为了能够严谨地阐述这个概念,我还是要抄一段维基百科中的词条:

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

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

  • 在Java中,可以用null初始化引用变量,例如,字符串变量可以像下面这样初始化: