import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ScientificCalc extends JFrame implements ActionListener
{
JPanel[] row = new JPanel[8];
JPanel[] row2 = new JPanel[3];
JButton[] button = new JButton[27];
String[] buttonString = { "7", "8", "9", "+", "√",
"4", "5", "6", "-", "³√",
"1", "2", "3", "*", "ⁿ√",
"0", ".", "/", "±",
"=", "sin", "cos", "tan",
"Clear", "x²", "x³", "xⁿ"};
int[] dimW = {300, 54, 100, 109};
int[] dimH = {35, 48, 100};
Dimension displayDimension = new Dimension(dimW[0], dimH[0]);
Dimension regularDimension = new Dimension(dimW[1], dimH[1]);
Dimension rColumnDimension = new Dimension(dimW[2], dimH[1]);
Dimension zeroButDimension = new Dimension(dimW[3], dimH[1]);
boolean[] function = new boolean[4];
double[] temporary = {0, 0};
JTextArea display = new JTextArea (1,20);
Font font = new Font("Comic Sans MS", Font.BOLD, 14);
ScientificCalc()
{
super("Scientific Calculator");
setDesign();
setSize(500, 400);
setResizable(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
GridLayout grid = new GridLayout(7,5);
setLayout(grid);
for (int i = 0; i < 4; i++)
{
function[i] = false;
}
FlowLayout f1 = new FlowLayout(FlowLayout.CENTER);
FlowLayout f2 = new FlowLayout(FlowLayout.CENTER,1,1);
for(int i = 0; i < 8; i++)
{
row[i] = new JPanel();
}
row[0].setLayout(f1);
for(int i = 1; i < 8; i++)
{
row[i].setLayout(f2);
}
for(int i = 0; i < 27; i++)
{
button[i] = new JButton();
button[i].setText(buttonString[i]);
button[i].setFont(font);
button[i].addActionListener(this);
}
display.setFont(font);
display.setEditable(false);
display.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
display.setPreferredSize(displayDimension);
for(int i = 0; i < 15; i++)
{
button[i].setPreferredSize(regularDimension);
}
for(int i = 15; i < 27; i++)
{
button[i].setPreferredSize(regularDimension);
}
button[15].setPreferredSize(zeroButDimension);
button[19].setPreferredSize(zeroButDimension);
button[23].setPreferredSize(zeroButDimension);
row[0].add(display);
add(row[0]);
for(int i = 0; i < 5; i++)
{
row[1].add(button[i]);
add(row[1]);
}
for(int i = 5; i < 10; i++)
{
row[2].add(button[i]);
add(row[2]);
}
for(int i = 10; i < 15; i++)
{
row[3].add(button[i]);
add(row[3]);
}
row[4].add(button[15]);
for(int i = 15; i < 19 ; i++)
{
row[4].add(button[i]);
add(row[4]);
}
row[5].add(button[19]);
for(int i = 20; i < 24 ; i++)
{
row[5].add(button[i]);
add(row[5]);
}
row[6].add(button[23]);
for(int i = 24; i < 27; i++)
{
row[6].add(button[i]);
add(row[6]);
}
setVisible(true);
}
public void clear()
{
try
{
display.setText("");
for(int i = 0; i < 4; i++)
function[i] = false;
for(int i = 0; i < 2; i++)
temporary[i] = 0;
} catch(NullPointerException e)
{
}
}
public void getSqrt()
{
try {
double value = Math.sqrt(Double.parseDouble(display.getText()));
display.setText(Double.toString(value));
} catch(NumberFormatException e) {
}
}
public void getCbrt()
{
try {
double value = Math.cbrt(Double.parseDouble(display.getText()));
display.setText(Double.toString(value));
} catch(NumberFormatException e) {
}
}
public void getNthRoot()
{
try {
double result = 0;
temporary[1] = Double.parseDouble(display.getText());
result = Math.pow(temporary[0], (1/temporary[1]));
display.setText(Double.toString(result));
} catch(NumberFormatException e) {
}
}
public void getPosNeg()
{
try {
double value = Double.parseDouble(display.getText());
if(value != 0) {
value = value * (-1);
display.setText(Double.toString(value));
}
else {
}
} catch(NumberFormatException e) {
}
}
public void getSqr()
{
try
{
double value = Math.pow(Double.parseDouble(display.getText()), 2);
display.setText(Double.toString(value));
} catch(NumberFormatException e)
{
}
}
public void getCube()
{
try
{
double value = Math.pow(Double.parseDouble(display.getText()), 3);
display.setText(Double.toString(value));
} catch(NumberFormatException e)
{
}
}
public void getNthPow()
{
try
{
double result = 0;
temporary[1] = Double.parseDouble(display.getText());
result = Math.pow(temporary[0], temporary[1]);
display.setText(Double.toString(result));
} catch(NumberFormatException e)
{
}
}
public void getSin()
{
try
{
double value = Math.sin(Double.parseDouble(display.getText()));
display.setText(Double.toString(value));
} catch(NumberFormatException e)
{
}
}
public void getCos()
{
try
{
double value = Math.sin(Double.parseDouble(display.getText()));
display.setText(Double.toString(value));
} catch(NumberFormatException e)
{
}
}
public void getTan()
{
try
{
double value = Math.sin(Double.parseDouble(display.getText()));
display.setText(Double.toString(value));
} catch(NumberFormatException e)
{
}
}
public void getResult() {
double result = 0;
temporary[1] = Double.parseDouble(display.getText());
String temp0 = Double.toString(temporary[0]);
String temp1 = Double.toString(temporary[1]);
try {
if(temp0.contains("-")) {
String[] temp00 = temp0.split("-", 2);
temporary[0] = (Double.parseDouble(temp00[1]) * -1);
}
if(temp1.contains("-")) {
String[] temp11 = temp1.split("-", 2);
temporary[1] = (Double.parseDouble(temp11[1]) * -1);
}
} catch(ArrayIndexOutOfBoundsException e) {
}
try {
if(function[2] == true)
result = temporary[0] * temporary[1];
else if(function[3] == true)
result = temporary[0] / temporary[1];
else if(function[0] == true)
result = temporary[0] + temporary[1];
else if(function[1] == true)
result = temporary[0] - temporary[1];
display.setText(Double.toString(result));
for(int i = 0; i < 4; i++)
function[i] = false;
} catch(NumberFormatException e) {
}
}
@Override
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource() == button[0])
display.append("7");
if(ae.getSource() == button[1])
display.append("8");
if(ae.getSource() == button[2])
display.append("9");
if(ae.getSource() == button[3])
{
//add function[0]
temporary[0] = Double.parseDouble(display.getText());
function[0] = true;
display.setText("");
}
if(ae.getSource() == button[4])
getSqrt();
if(ae.getSource() == button[5])
display.append("4");
if(ae.getSource() == button[6])
display.append("5");
if(ae.getSource() == button[7])
display.append("6");
if(ae.getSource() == button[8])
{
//subtract function[1]
temporary[0] = Double.parseDouble(display.getText());
function[1] = true;
display.setText("");
}
if(ae.getSource() == button[9])
getCbrt();
if(ae.getSource() == button[10])
display.append("1");
if(ae.getSource() == button[11])
display.append("2");
if(ae.getSource() == button[12])
display.append("3");
if(ae.getSource() == button[13])
{
//multiply function[2]
temporary[0] = Double.parseDouble(display.getText());
function[2] = true;
display.setText("");
}
if(ae.getSource() == button[14])
{
temporary[0] = Double.parseDouble(display.getText());
display.setText("");
getNthRoot();
}
if(ae.getSource() == button[15])
display.append("0");
if(ae.getSource() == button[16])
display.append(".");
if(ae.getSource() == button[17])
{
//divide function[3]
temporary[0] = Double.parseDouble(display.getText());
function[3] = true;
display.setText("");
}
if(ae.getSource() == button[18])
getPosNeg();
if(ae.getSource() == button[19])
getResult();
if(ae.getSource() == button[20])
getSin();
if(ae.getSource() == button[21])
getCos();
if(ae.getSource() == button[22])
getTan();
if(ae.getSource() == button[23])
clear();
if(ae.getSource() == button[24])
getSqr();
if(ae.getSource() == button[25])
getCube();
if(ae.getSource() == button[26])
getNthPow();
}
public final void setDesign() {
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch(Exception e) {
}
}
public static void main(String[] args)
{
new ScientificCalc();
}
}
好吧,我在Eclipse中编写了这段代码,当我点击运行时,它给了我一个错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
at ScientificCalc.main(ScientificCalc.java:413)
所以,我把它粘贴到记事本++并将其保存在其他地方。 然后,我在CMD中尝试了它,代码工作顺利。请帮帮忙?
答案 0 :(得分:0)
删除“@Override”完成工作
答案 1 :(得分:0)
删除@Orverride
应解决此问题,因为@Override
表示您在程序中的其他位置使用了相同的方法,并且您想要“覆盖”它,在这种情况下您不会你想创建它,而不是覆盖它。要详细了解如何使用@Override
方法Visit this link.