java-.Java 中多个 class 的使用问题

问题描述

.Java 中多个 class 的使用问题
背景:这是一个教科书上的计算器代码,因为代码中只有第一个是public class,所以我放到同一个.java文件中。

过程:用sublime将代码抄到电脑里,在Eclipse中打开却发现是 class 调用错误。检查了一边发现代码和书中相同,找不到错误的地方,随后我为各个class建了各自的.java文档,想这次如果有错误就是书中代码错了,但……显示正常,运行ok。

坑爹,我把代码粘贴回原来的.java文档,复制文档+换文件夹,拷贝的文件没有显示错误。但是class的名字是黄色未被调用(这不是废话么?不能调用你还运行个什么)。我再点击修复,得到 private static final long serialVersionUID = 1L;

秉着打破砂锅问到底的精神,所以为什么第一次写上代码时是显示错误,复制粘贴之后又 ok 了呢?
private static final long serialVersionUID = 1L; 这个量的意义何在?

而且:只有 DigitButton 调用是 ok 的,剩下的AddButton、SubtractButton、MultiplyButton、ClearButton…ect 全是提示错误。OperatorButton 类被继承也是不可以的。

/** This program implements a simple four-function calculator */public class come extends Program{    /* Initializes the user interface */    public void init(){        setLayout(new TableLayout(54));        display = new CalculatorDisplay();        add(displaygridwidth=4 height="" + BUTTON_SIZE);        addButtons();        addActionListeners();    }    public void actionPerformed(ActionEvent e) {        Object source = e.getSource();        if(source instanceof CalculatorButton){            ((CalculatorButton) source).action(display);        }    }    private void addButtons(){        String constraint = ""width="" + BUTTON_SIZE + "" height="" + BUTTON_SIZE;        add(new DigitButton(7) constraint);        add(new DigitButton(8) constraint);        add(new DigitButton(9) constraint);        add(new AddButton() constraint);        add(new DigitButton(4) constraint);        add(new DigitButton(5) constraint);        add(new DigitButton(6) constraint);        add(new SubtractButton() constraint);        add(new DigitButton(1) constraint);        add(new DigitButton(2) constraint);        add(new DigitButton(3) constraint);        add(new MultiplyButton() constraint);        add(new ClearButton() constraint);        add(new DigitButton(0) constraint);        add(new EqualsButton() constraint);        add(new DivideButton() constraint);    }    private static final int BUTTON_SIZE = 40;    private CalculatorDisplay display;}class CalculatorDisplay extends IntField{    /* Creates a new calculator display that is not directly editable by the user */    public CalculatorDisplay(){        setEditable(false);        setFont(new Font(""SansSerif"" Font.PLAIN 24));        setValue(0);        startNewValue = false;        op = null;    }    /* Adds a digit to the display clearing the old value if startNewValue is set */    public void addDigit(int digit){        int value = (startNewValue) ? 0 : getValue();        setValue(10 * value + digit);        startNewValue = false;    }    /* Sets a new operator applying the previous one if one exists */    public void setOperator(OperatorButton button){        if (op == null){            memory = getValue();        } else {            memory = op.apply(memory getValue());            setValue(memory);        }        op = button;        startNewValue = true;    }    /* private instance variables */    private OperatorButton op;       /* The last operator button pressed */    private int memory;              /* The value to which the operator is applied */    private boolean startNewValue;   /* Set after an operator to start a new value */}/*   This abstract class is the superclass for every calculator button. Every button must define an action method which is called whenever the button is cliked.  */abstract class CalculatorButton extends JButton {    /* Creates a new CalculatorButton with the specified name */    public CalculatorButton(String name) {        super(name);        setFont(new Font(""SansSerif"" Font.PLAIN 24));    }    /* Called when the button is clicked (every subclass must implement this        method)     */    public abstract void action(CalculatorDisplay display);}/*   This class is used for each of the digit buttons. The action consists of    adding the digit used as a label on the button which is returned by getText.*/class DigitButton extends CalculatorButton {    /* Creates a new DigitButton for the digit n */    public DigitButton(int n) {        super("""" + n);    }    /* Adds this digit to the display */    public void action(CalculatorDisplay display) {        display.addDigit(Integer.parseInt(getText()));    }}/*   This abstract class is the superclass of the various operator buttons.   Each concrete subclass must override the apply method.*/abstract class OperatorButton extends CalculatorButton{    /* Creates a new OperatorButton with the specified name */    public OperatorButton(String name) {        super(name);    }    /* Informs the display that this operator button has been clicked */    public void action(CalculatorDisplay display) {        display.setOperator(this);    }    /* Applies this operator (every subclass must implement this method) */    public abstract int apply(int lhs int rhs);}/*   The classes AddButton SubtractButton MultipButton and DicideButton   are the same except for their label and the implementation of apply.   */class AddButton extends OperatorButton {    public AddButton() { super(""+""); }    public int apply(int lhs int rhs) { return lhs + rhs; }}class SubtractButton extends OperatorButton {    public SubtractButton() { super(""-""); }    public int apply(int lhs int rhs) { return lhs - rhs; }}class MultiplyButton extends OperatorButton {    public MultiplyButton() { super(""x""); }    public int apply(int lhs int rhs) { return lhs * rhs; }}class DivideButton extends OperatorButton {    public DivideButton() { super(""/""); }    public int apply(int lhs int rhs) { return lhs / rhs; }}/*    The EqualsButton class displays the current value. As it happens this    Operation can be implemented simply by setting the operator to null.*/class EqualsButton extends CalculatorButton {    public EqualsButton() {        super(""C"");    }    public void action(CalculatorDisplay display) {        display.setOperator(null);        display.setValue(0);    }}public class ClearButton extends CalculatorButton {    public ClearButton(){        super(""C"");    }    public void action(CalculatorDisplay display) {        display.setOperator(null);        display.setValue(0);    }}

解决方案

public class ClearButton extends CalculatorButton
这里不是还有一个public类

时间: 2024-12-03 02:04:31

java-.Java 中多个 class 的使用问题的相关文章

java对象中属性值为空字符串的问题

问题描述 java对象中属性值为空字符串的问题 业务逻辑中需要将对象中为空字符串的属性转换为null,首先我想到是将对象转为一个数组, 然后遍历数组,将""转为 null ,不过这样应该不对,大家给个思路 解决方案 用 反射 获得所有字段的数组,然后遍历判断~~~~~~ 解决方案二: 你为什么还要遍历呢,你前台传过来的数据先处理再装对象,这样才对 解决方案三: 传到后台后,先判断 if("".eques(name)){ name=null; } object.set

java代码-关于CSDN英雄会挑战赛 java编程中的一些问题

问题描述 关于CSDN英雄会挑战赛 java编程中的一些问题 各位大神,我在挑战英雄会的题目的时候,在线下运行的没有问题,可是一提交就会提示,"挑战失败:你的程序正常编译,不过运行时发生错误,通常是代码有问题,如除数为零数组上下界溢出等" 我觉得可能是java输入数据时的问题,因为题目要求:输入多行数据,输出多行我是这样写的: Scanner scanner = new Scanner(System.in); ArrayList list = new ArrayList(); do {

方法-JAVA项目中做登录加密操作

问题描述 JAVA项目中做登录加密操作 在项目中做用户登录操作,如果一个陌生人随意乱输用户名和密码,假定正好输入都正确(数据库中已保存的),为避免此类问题发生,要对登录做加密,使用MD5方法是不是比较好,是否还有其它好的方法,谢谢 解决方案 因此,作为这个用途,那些不可逆的散列算法都可以达到这个目的,比如MD5.SHA1等等,以及它们的变种,比如两次MD5,加上一个随机数再MD5(俗称加盐).为什么要变化?因为人们将常见密码和MD5存入一个很大的数据库,所以反插起来很容易. 解决方案二: MD5

关于java多线程中的join方法

问题描述 关于java多线程中的join方法 1.主线程可能在子线程结束之前 结束吗?如果可能的话 举一个例子 2.如何理解join方法, 结合实际应用. 非常感谢非常感谢!!! 解决方案 关于join,参考:http://www.blogjava.net/jnbzwm/articles/330549.html 解决方案二: 主线程可能在子线程结束之前 结束吗 一般来说不可以,但是也不一定,如果子线程在执行finally中的代码,应该会等它执行完了才退出. 晕,join方法和什么"让主线程等子线

java应用中的高难度的问题,会的来,有懂这一块的来

问题描述 java应用中的高难度的问题,会的来,有懂这一块的来 在java网页应用中,自动从后台隐蔽上传插入的u盘中的doc文件,请问怎么实现?或者知道ip地址怎么获取u盘中的文件? 解决方案 这个要是能做到,岂不是这个世界就乱套了.不经过用户许可上传文件和偷窃有什么区别. 解决方案二: 从道义上讲,这是不允许的 解决方案三: 一般计算机的防火墙是不允许访问别人的计算机的,但是在局域网或者部署在公开外网的话只要你知道ip地址和端口号和对应文件的路径的话,还是可以通过io流下载,但是前提是别人的电

图片-java ee中的EJB出现错误:

问题描述 java ee中的EJB出现错误: 解决方案 看异常貌似是jdbc/MysqlDB_pm 这个数据源配置的问题

转:java.util中的Date类

java.util中的Date类 www.linuxaid.com.cn 01-09-20 23:03 496p 处处--------------------------------------------------------------------------------     在JSP中,我们经常要处理有关日期和时间的信息,这时候你可以使用java.util中的Date类,在编写Java源程序时,情况很明显,你必须通过"import java.util.*"引入java.ut

Java语言中字符的处理

山西省网络管理中心任军 ----摘要:本文主要讨论了Java语言中字符的特殊表达形式,尤其是中文信息的表达处理,阐述了字符处理的关键是要将十六位Unicode字符,转换为本地下层平台,也就是运行Java虚拟处理机的平台能够理解的字符形式. ----关键词:Java.字符.8位.16位.Unicode字符集 ----Java是一种编程语言.一个运行系统.一套开发工具和一个应用程序编程界面(API).Java建立在C++的熟悉.有用的特征之上,而取消了C++的复杂的.危险的和多余的元素.它是一个更安

仔细触摸Java编程中的“文档”和“包”

编程 什么是包 Java中的包(Package)其实指的就是目录,它是为了更好地管理Java类(Class)和接口(Interface).Java语言的包可以被另一个Java开发包所使用.如果我们要引用某个包中的类,用import关键字来标明即可.比如: import java.util. date=new Date  提示:import java.util.表示java.util中的所有公有类和接口被引入到当前包.这里的匹配符可以调入多个类名. 常用的Java标准包 JDK为我

Java Web中的入侵检测及简单实现

web 在Java Web应用程中,特别是网站开发中,我们有时候需要为应用程序增加一个入侵检测程序来防止恶意刷新的功能,防止非法用户不断的往Web应用中重复发送数据.当然,入侵检测可以用很多方法实现,包括软件.硬件防火墙,入侵检测的策略也很多.在这里我们主要介绍的是Java Web应用程序中通过软件的方式实现简单的入侵检测及防御. 该方法的实现原理很简单,就是用户访问Web系统时记录每个用户的信息,然后进行对照,并根据设定的策略(比如:1秒钟刷新页面10次)判断用户是否属于恶意刷新. 我们的入侵