解决IntelliJ‘Cannot resolve symbol’错误:Java计算器代码问题修复
解决"Cannot resolve symbol Calculator"错误
错误原因分析
- 你的代码定义的类是
Main,但在main方法里尝试实例化Calculator类,这个类不存在,所以IDE无法识别。 - 你写的
void Calculator()是普通成员方法,不是构造函数。构造函数的规则是无返回值类型(不能写void),且方法名必须和类名完全一致。 - import语句存在语法错误:
import javax.swing.;和import java.awt.;缺少通配符*,正确写法是import javax.swing.*;和import java.awt.*;。
修复方案
方案1:将类名改为Calculator(推荐)
把类名修改为Calculator,同时将void Calculator()改为构造函数(去掉void),这样就能正常实例化类并初始化窗口:
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Calculator implements ActionListener { JFrame frame; JTextField textField; JButton[] NumberButtons = new JButton[10]; JButton[] FunctionButtons = new JButton[8]; JButton addButton , subButton , mulButton , divButton; JButton decButton , eqlButton , clrButton , delButton; JPanel panel; Font myfont = new Font("8514oem", Font.BOLD,30); double num1 = 0 , num2 = 0 , result= 0; char operator; // 构造函数:无返回值类型,名称与类名一致 Calculator(){ frame = new JFrame("Calculator"); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(420,550); frame.setLayout(null); } public static void main(String[]args){ Calculator calc = new Calculator(); // 现在可正常识别Calculator类 } @Override public void actionPerformed(ActionEvent e) { } }
方案2:保留类名Main,调用普通方法
如果不想修改类名,就在main方法中创建Main类的实例,再调用初始化窗口的Calculator方法:
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Main implements ActionListener { JFrame frame; JTextField textField; JButton[] NumberButtons = new JButton[10]; JButton[] FunctionButtons = new JButton[8]; JButton addButton , subButton , mulButton , divButton; JButton decButton , eqlButton , clrButton , delButton; JPanel panel; Font myfont = new Font("8514oem", Font.BOLD,30); double num1 = 0 , num2 = 0 , result= 0; char operator; void Calculator(){ frame = new JFrame("Calculator"); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(420,550); frame.setLayout(null); } public static void main(String[]args){ Main main = new Main(); main.Calculator(); // 调用窗口初始化方法 } @Override public void actionPerformed(ActionEvent e) { } }
内容的提问来源于stack exchange,提问作者Spicy 32
相关产品推荐
相关产品推荐

