
正文
JAVA输入代码自己写 java输入怎么写
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
求基础级java代码,150-200行,自己写的
JAVA输入代码自己写我有计算器程序
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.HashMap;
/**
* 我的计算器。MyCalculator 继承于 JFrameJAVA输入代码自己写,是计算器的界面
*/
public class Calculator extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private Border border = BorderFactory.createEmptyBorder(5, 5, 5, 5);
private JTextField textbox = new JTextField("0");
private CalculatorCore core = new CalculatorCore();
private ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
JButton b = (JButton) e.getSource();
String label = b.getText();
String result = core.process(label);
textbox.setText(result);
}
};
public Calculator(String title) throws HeadlessException {
super(title); // 调用父类构造方法
setupFrame(); // 调整窗体属性
setupControls(); // 创建控件
}
private void setupControls() {
setupDisplayPanel(); // 创建文本面板
setupButtonsPanel(); // 创建按钮面板
}
// 创建按钮面板并添加按钮
private void setupButtonsPanel() {
JPanel panel = new JPanel();
panel.setBorder(border);
panel.setLayout(new GridLayout(4, 5, 3, 3));
createButtons(panel, new String[]{
"7", "8", "9", "+", "C",
"4", "5", "6", "-", "CE",
"1", "2", "3", "*", "", // 空字符串表示这个位置没有按钮
"0", ".", "=", "/", ""
});
this.add(panel, BorderLayout.CENTER);
}
/**
* 在指定的面板上创建按钮
*
* @param panel 要创建按钮的面板
* @param labels 按钮文字
*/
private void createButtons(JPanel panel, String[] labels) {
for (String label : labels) {
// 如果 label 为空JAVA输入代码自己写,则表示创建一个空面板。否则创建一个按钮。
if (label.equals("")) {
panel.add(new JPanel());
} else {
JButton b = new JButton(label);
b.addActionListener(listener); // 为按钮添加侦听器
panel.add(b);
}
}
}
// 设置显示面板,用一个文本框来作为计算器的显示部分。
private void setupDisplayPanel() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBorder(border);
setupTextbox();
panel.add(textbox, BorderLayout.CENTER);
this.add(panel, BorderLayout.NORTH);
}
// 调整文本框
private void setupTextbox() {
textbox.setHorizontalAlignment(JTextField.RIGHT); // 文本右对齐
textbox.setEditable(false); // 文本框只读
textbox.setBackground(Color.white); // 文本框背景色为白色
}
// 调整窗体
private void setupFrame() {
this.setDefaultCloseOperation(EXIT_ON_CLOSE); // 当窗体关闭时程序结束
this.setLocation(100, 50); // 设置窗体显示在桌面上的位置
this.setSize(300, 200); // 设置窗体大小
this.setResizable(false); // 窗体大小固定
}
// 程序入口
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Calculator frame = new Calculator("我的计算器");
frame.setVisible(true); // 在桌面上显示窗体
}
}
/**
* 计算器核心逻辑。这个逻辑只能处理 1~2 个数的运算。
*/
class CalculatorCore {
private String displayText = "0"; // 要显示的文本
boolean reset = true;
int MaxLen = 30;
private BigDecimal number1, number2;
private String operator;
private HashMapString, Operator operators = new HashMapString, Operator();
private HashMapString, Processor processors = new HashMapString, Processor();
CalculatorCore() {
setupOperators();
setupProcessors();
}
// 为每种命令添加处理方式
private void setupProcessors() {
processors.put("[0-9]", new Processor() {
public void calculate(String command) {
numberClicked(command);
}
});
processors.put("\\.", new Processor() {
public void calculate(String command) {
dotClicked();
}
});
processors.put("=", new Processor() {
public void calculate(String command) {
equalsClicked();
}
});
processors.put("[+\\-*/]", new Processor() {
public void calculate(String command) {
operatorClicked(command);
}
});
processors.put("C", new Processor() {
public void calculate(String command) {
clearClicked();
}
});
processors.put("CE", new Processor() {
public void calculate(String command) {
clearErrorClicked();
}
});
}
// 为每种 operator 添加处理方式
private void setupOperators() {
operators.put("+", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.add(number2);
}
});
operators.put("-", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.subtract(number2);
}
});
operators.put("*", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.multiply(number2);
}
});
operators.put("/", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.divide(number2, 30, RoundingMode.HALF_UP);
}
});
}
// 根据命令处理。这里的命令实际上就是按钮文本。
public String process(String command) {
for (String pattern : processors.keySet()) {
if (command.matches(pattern)) {
processors.get(pattern).calculate(command);
break;
}
}
return displayText;
}
// 当按下 CE 时
private void clearErrorClicked() {
if (operator == null) {
number1 = null;
} else {
number2 = null;
}
displayText = "0";
reset = true;
}
// 当按下 C 时,将计算器置为初始状态。
private void clearClicked() {
number1 = null;
number2 = null;
operator = null;
displayText = "0";
reset = true;
}
// 当按下 = 时
private void equalsClicked() {
calculateResult();
number1 = null;
number2 = null;
operator = null;
reset = true;
}
// 计算结果
/**
*
*/
private void calculateResult() {
number2 = new BigDecimal(displayText);
Operator oper = operators.get(operator);
if (oper != null) {
try {
BigDecimal result = oper.process(number1, number2);
displayText = result.toString();
} catch (RuntimeException e) {
clearClicked();//将计算器置为初始状态
JOptionPane.showMessageDialog(null,"不能用零作除数","出错JAVA输入代码自己写了",JOptionPane.OK_OPTION);
//e.printStackTrace();
}
}
}
// 当按下 +-*/ 时(这里也可以扩展成其JAVA输入代码自己写他中间操作符)
private void operatorClicked(String command) {
if (operator != null) {
calculateResult();
}
number1 = new BigDecimal(displayText);
operator = command;
reset = true;
}
// 当按下 . 时
private void dotClicked() {
if (displayText.indexOf(".") == -1) {
displayText += ".";
} else if (reset) {
displayText = "0.";
}
reset = false;
}
// 当按下 0-9 时
private void numberClicked(String command) {
if (reset) {
displayText = command;
} else {
if(displayText.length() MaxLen)
displayText += command;
else
JOptionPane.showMessageDialog(null,"输入的数字太长了","出错了",JOptionPane.OK_OPTION);
}
reset = false;
}
// 运算符处理接口
interface Operator {
BigDecimal process(BigDecimal number1, BigDecimal number2);
}
// 按钮处理接口
interface Processor {
void calculate(String command);
}
}
相关问答
Q1: 要从键盘上输入一个数java代码怎么写
你好JAVA输入代码自己写,
假设是输入整数JAVA输入代码自己写:
Scanner san = new Scanner(System.in); //声明输入变量san并初始化JAVA输入代码自己写;
int i = san.nextInt(); //将输入JAVA输入代码自己写的变量san的值赋给整数变量 i ;
System.out.println(i); //输出i 。
就是利用Scanner这个类。
希望可以帮助到你 ~O(∩_∩)O~
Q2: 如何使用Eclipse编写自己的第一个Java代码
在左侧工作空间空白处右键点击新建Java项目(Project) 比如说项目名字为aaa
然后在里面的src处点右键新建一个包(backpack) 然后再在包那再点击右键
新建一个类(Class) 右侧就会出现对应的项目 然后就可以在里面写Java程序了
Q3: 用记事本写java代码怎么运行?
用记事本写完代码后运行方法如下:
1、用浏览器打开用记事本编写的代码
新建“文本文档”后,鼠标右键点击该文本文档,在菜单栏的“打开方式”选择“用记事本打开”,也可以设置默认打开方式为“记事本”;用记事本打开文本文档后,直接在该文档内根据自己的需要输入想要编辑的网页代码。
2、记事本写java代码怎么运行
首先,需要安装jdk并配置环境变量。然后,在命令行中,用javac命令编译用记事本编写的代码。下一步,在命令行中,用java命令执行编译后的结果。
代码是什么
代码是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。代码设计的原则包括唯一确定性、标准化和通用性、可扩充性与稳定性、便于识别与记忆、力求短小与格式统一以及容易修改等。
计算机源代码最终目的是将人类可读文本翻译成为计算机可执行的二进制指令,这种过程叫编译,它由通过编译器完成。源代码就是用汇编语言和高级语言写出来的地代码。目标代码是指源代码经过编译程序产生的能被 cpu直接识别二进制代码。
可执行代码就是将目标代码连接后形成的可执行文件,当然也是二进制的。
Q4: java问题,方法我已经写好了,但是我不知道怎么写输入的代码,实现如图效果,求解。
import java.util.Scanner;
public class TestRef {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
TV tv=new TV();
/*if(sc.hasNext())
{
tv.control(sc.next());
}
if(sc.hasNextInt())
{
tv.control(sc.nextInt());
}*/
while(sc.hasNext()){
/*
* 简单说明一下JAVA输入代码自己写,当输入1234的时候JAVA输入代码自己写,问一下这个是数字还是字符串。
* 这个答案是不知道的,因为1234既可以是数字也可以是字符串
* 代码一开始就sc.next()这个时候返回的是字符串,那么他会把数字也当成字符串的。
* 看一下要求,JAVA输入代码自己写我们会发现这里输入的内容如果不是数字,就是字符串了。
* 所以这个地方换成if else就更合理了,否则的话是有问题的
* */
if(sc.hasNextInt())//一定要先判断数字否则会把数字当成字符串的
{
tv.control(sc.nextInt());
}else{
tv.control(sc.next());
}
if(tv.isClose){
break;//电视关闭,结束循环
}
}
}
}
class TV{
String ChannelArray[]={"中央1台","中央2台","中央3台","中央4台","浙江卫视","浙江综合","浙江经济","杭州文艺","中央体育","山东卫视"};
int CurrentChannel[]={0,1,2,3,4,5,6,7,8,9};
int recent;
boolean isClose;//添加一个关闭电视的属性
void control(int recent)
{
this.recent=recent;
System.out.println(ChannelArray[recent]);
}
void control(String Current)
{
switch(Current)
{
case "U":
recent++;
if(recent9)
recent=0;
System.out.println(ChannelArray[recent]);
break;
case "D":
recent--;
if(recent0)
recent=9;
System.out.println(ChannelArray[recent]);
break;
case "O":
System.out.println("电视关闭");
isClose = true;//关闭电视
break;
}
}
}
代码我修改了一下,你可以看一下具体的思路,这里我想说一下,楼上灯丝浪徒dslt_ 的答案的思想是不错的,他发现问题后想到的是加一个中间层来屏蔽两头的不一致的问题,尽可能的不修改你的代码。当然我也想的是尽可能不修改你的代码,但是我还是调整了你的TV这个类的代码,不能说谁的更好,看个人的喜好。
还有就是我的代码调试过,改掉了你的一个小小的bug,我把问题的原因写到注释里面了,你可以自己看一下。
关于JAVA输入代码自己写和java输入怎么写的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。








