计算器(功能有数字反序,文字竖排,二进制查看器等)

本文深入探讨了智能算法在不同领域的应用,包括大数据、AI、音视频处理等,旨在为开发者提供全面的技术解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class Exer extends JFrame { final JButton[] buttons = new JButton[11]; final JTextField field = new JTextField(20); final JPanel[] panels = new JPanel[2]; final JLabel label = new JLabel(); final JTextArea area = new JTextArea(10, 80); final JScrollPane pane = new JScrollPane(area); final JCheckBox[] boxs = new JCheckBox[6]; final JRadioButton[] radioButtons = new JRadioButton[2]; final ButtonGroup group = new ButtonGroup(); final int num = (int) (Math.random() * 10); private Object[] data; private int top; private int i = 9; private boolean flag; public Exer(String title) { super(title); buttons[0] = new JButton("反序"); buttons[1] = new JButton("乘法表"); buttons[2] = new JButton("奇数分母之和"); buttons[3] = new JButton("金字塔"); buttons[4] = new JButton("入栈"); buttons[5] = new JButton("出栈"); buttons[6] = new JButton("素数/偶数"); buttons[7] = new JButton("文字竖排"); buttons[8] = new JButton("二进制"); buttons[9] = new JButton("猜数"); buttons[10] = new JButton("清空"); boxs[0] = new JCheckBox("千位大于百位"); boxs[1] = new JCheckBox("十位大于个位"); boxs[2] = new JCheckBox("千位与个位之后等于百位与十位之后"); boxs[3] = new JCheckBox("百位是奇数"); boxs[4] = new JCheckBox("全选"); boxs[5] = new JCheckBox("全删"); radioButtons[0] = new JRadioButton("算法一", true); radioButtons[1] = new JRadioButton("算法二"); for (int i = 0; i < radioButtons.length; i++) { group.add(radioButtons[i]); } for (int i = 0; i < panels.length; i++) { panels[i] = new JPanel(); } panels[0].setLayout(new GridLayout(2, 5)); panels[1].setLayout(new FlowLayout(FlowLayout.LEFT)); panels[0].add(field); for (int i = 0; i < buttons.length; i++) { panels[0].add(buttons[i]); } for (int i = 0; i < radioButtons.length; i++) { panels[1].add(radioButtons[i]); } for (int i = 0; i < boxs.length; i++) { panels[1].add(boxs[i]); boxs[i].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { boolean b = boxs[0].isSelected() && boxs[1].isSelected() && boxs[2].isSelected() && boxs[3].isSelected(); field.setText(b && flag ? numNumber() + "" : ""); field.setText(b && !flag ? numNumber2() + "" : ""); if (boxs[4].isSelected()) { for (int j = 0; j < boxs.length - 1; j++) { boxs[j].setSelected(true); } field.setText(numNumber() + ""); if (flag) { field.setText(numNumber2() + ""); } } if (boxs[5].isSelected()) { for (int j = 0; j < boxs.length - 1; j++) { boxs[j].setSelected(false); } field.setText(""); } } }); } panels[0].add(label); add(panels[0], BorderLayout.NORTH); add(pane, BorderLayout.CENTER); add(panels[1], BorderLayout.SOUTH); field.addKeyListener(new KeyAdapter() { public void keyTyped(KeyEvent e) { label.setText(""); } }); field.addMouseListener(new MouseAdapter() { public void mouseEntered(MouseEvent e) { label.setText("please input your number:"); } public void mouseExited(MouseEvent e) { label.setText(""); } }); buttons[0].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String string = field.getText().trim(); try { field.setText(reverse(Integer.parseInt(string)) + ""); } catch (NumberFormatException e1) { label.setText("不是数字"); } } }); buttons[1].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String string = field.getText().trim(); if (area.getText() != "") { area.setText(""); } try { nine(Integer.parseInt(string)); } catch (NumberFormatException e1) { label.setText("不是数字"); } } }); buttons[2].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String string = field.getText().trim(); try { field.setText(numerator(Integer.parseInt(string)) + ""); } catch (NumberFormatException e1) { label.setText("不是数字"); } } }); buttons[3].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String string = field.getText().trim(); try { triangle(Integer.parseInt(string)); } catch (NumberFormatException e1) { label.setText("不是数字"); } } }); buttons[4].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (push(field.getText()) == null) { label.setText("入栈失败,栈空间已满!"); return; } area.append("入栈:" + field.getText() + "\n"); } }); buttons[5].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (pop() == null) { label.setText("出栈失败,栈空间已空!"); return; } area.append("出栈:" + field.getText() + "\n"); } }); buttons[6].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String string = field.getText().trim(); try { if (isPrimeNumber(Integer.parseInt(string))) { label.setText(field.getText().trim() + "是素数"); } else { label.setText(field.getText().trim() + "是偶数"); } } catch (NumberFormatException e1) { label.setText("不是数字"); } } }); buttons[7].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = area.getText(); char[][] arr = new char[4][7]; tang(arr, s); } }); buttons[8].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String string = field.getText().trim(); try { field.setText(binary(Integer.parseInt(string))); } catch (NumberFormatException e1) { label.setText("不是数字"); } } }); buttons[9].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String string = field.getText().trim(); try { guess(Integer.parseInt(string)); } catch (NumberFormatException e1) { label.setText("不是数字"); } } }); buttons[10].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { field.setText(""); area.setText(""); } }); radioButtons[0].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (radioButtons[0].isSelected()) { flag = true; } } }); radioButtons[1].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (radioButtons[1].isSelected()) { flag = false; } } }); area.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { area.setText(""); } }); pack(); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } public Exer(String title, int size) { this(title); data = new Object[size]; top = 0; } public static void main(String[] args) { Exer exer = new Exer("计算器", 3); } private Object push(Object object) { if (top == data.length) { return null; } data[top++] = object; return object; } private Object pop() { if (top == 0) { return null; } return data[--top]; } private int reverse(int n) { int oldInteger = n; int newInteger = 0; for (; oldInteger != 0; oldInteger /= 10) { newInteger = newInteger * 10 + oldInteger % 10; } return newInteger; } private void nine(int n) { for (int i = 1, j = 1; j <= n; i++) { area.append(j + "*" + i + "=" + (i * j) + "\t"); if (i == j) { i = 0; j++; area.append("\n"); } } } private double numerator(int n) { double sum = 0.0; for (int i = 1, d = 1; i <= n; i++, d = -d) { sum += d * 1.0 / (2 * i - 1); } return sum; } private void triangle(int n) { for (int i = 1; i <= n; i++) { for (int j = 0; j < n - i; j++) { area.append(" "); } for (int j = 0; j < 2 * i - 1; j++) { area.append("*"); } area.append("\n"); } } private int numNumber2() { for (int i = 1000; i <= 9999; i++) { int q = i / 1000; int b = i / 100 % 10; int s = i / 10 % 10; int g = i % 10; boolean flag = q > b && s > g && q + g == b + s && b % 2 != 0; if (flag) { return i; } } return 0; } private int numNumber() { boolean flag; int num = 0; loop1: for (int q = 1; q <= 9; q++) { loop2: for (int b = 0; b <= 9; b++) { if (b << 1 == 0 || q <= b) { continue loop2; } for (int s = 0; s <= 9; s++) { for (int g = 0; g <= 9; g++) { flag = s > g && q + g == b + s; if (flag) { num = q * 1000 + b * 100 + s * 10 + g; break loop1; } } } } } return num; } private boolean isPrimeNumber(int n) { for (int i = 2; i <= n / 2; i++) { if (n % i == 0) { return false; } } return true; } private void tang(char[][] arr, String s) { area.setText(""); for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { arr[i][j] = s.charAt(i * arr[i].length + j); } } for (int i = 0; i < arr[0].length; i++) { for (int j = 0; j < arr.length; j++) { area.append(arr[arr.length - j - 1][i] + " "); } area.append("\n"); } } private String binary(int n) { StringBuffer buffer = new StringBuffer(); int num; for (int i = 31; i >= 0; i--) { num = (n & (1 << i)) != 0 ? 1 : 0; buffer.append(num); if ((32 - i) % 8 == 0) { buffer.append(" "); } } return buffer.toString(); } private void guess(int m) { if (area.getText() != "") { area.setText(""); } int n = m; if (n > num) { area.append("Too large!"); } else if (n < num) { area.append("Too small!"); } else { area.append("You are Right!"); return; } if (i > 0) { label.setText("还有" + i + "次机会!"); } if (n != num && i == 0) { label.setText("下次再来吧"); return; } i--; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值