由于自己的实验报告 需要用Java来写一个实验报告。自己本没有怎么学过Java,但是学的话也就认真的学一下,毕竟技术这条路线是技多不压身。于是在网站上找来了一些资料,关于Java到底是干什么的,以及Java应该如何学习。

为什么选择Java

  1.Java作为一门面向对象的语言(oop),逻辑严谨,并且自身集成JDK提供了很多方便的方法,有大量的开源包可以使用。

  2.Java属于C系语言,逻辑思维易于接受,开始接触课程时不容易与课程冲突。

  3.Java简化了与系统的接口,更容易实现GUI的编程。

学习Java有什么好处和什么坏处

  1.学习Java利于编程逻辑的建立。

  2.Java存在GC内存处理,可以减少很多编程的烦恼和地址的一些难以理解编程内容。

  1.Java封闭了很多编程的东西(尤其是地址等),导致不便于深入理解编程。

  2.Java存在很多细节的东西,深入学习很难。

学习Java需要注意什么

  勤于练习

  区分和其他语言的区别

  习惯oop特性

  让自己的代码逻辑清晰

  勤于思考

  不要被语言束缚自己

  Java不是Javascript

  如果学习Java可以在熟悉Java后就向android的SDK进行学习

Java能做什么

  可以做小应用、网站、搜索引擎、Android软件,甚至读书用的kindle,其系统也是使用Java写的。

Java的学习资料推荐

  <HeadFirst Java> 入门快速理解Java

  Java2核心技术  有上下两本

  Thinking in Java

  下载JDK文档,学会使用JDK文档进行查询

  看一些国内外的视频,网易公开课也有不错的课程,但是学习周期略长

  多练习多写代码

下面的是建议计算器代码的源码,当然也是参考了一些资料的,如果能闭着眼睛写出来的话,我就不会在这里了。
 
 package book;

 import javax.swing.*;
import java.awt.*;
import java.awt.event.*; public class Calc extends MouseAdapter {
JFrame list;
// 静态属性
JTextField show;
JButton[] jbNum = new JButton[];
JPanel jpMain; // 主面板
JPanel jpRight; // 右子面板主要用于存放运算符和等号
JPanel jpLeft; // 左子面板用于存放数字,符号, “.” JButton dight; // 小数点
JButton sign; // 正负号
JButton add; // 加号
JButton sub; // 减号
JButton multiply; // 乘号
JButton divide; // 除号
JButton c; // 清除
JButton equal; // 等于
JButton mod; // 取余
JButton sqrt; // sqrt
double sum = ; // 初始化
boolean b = false; // 监控运算符是否被点击,错误是否出现,用于实现下一次点击按钮时清空
//自定义属性 操作符
operator i = operator.un; // 记录等号符点击前某一运算符点击次数,用于实现连加或者连减等 int op; // 记录操作符 // 操作符一包括+-*/%
enum operator {
add, sub, mul, div, mod, sqrt, un
} //动态的方法
void display() {
// 创建主窗口,添加一个Text框,
list = new JFrame("计算器");
list.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
list.setSize(, );//设置窗口大小
list.setLocation(, );//设置窗口位置
list.setBackground(Color.LIGHT_GRAY); // 设置窗口背景颜色
list.setResizable(false);//设置窗口大小不可调整 list.setLayout(new FlowLayout(FlowLayout.CENTER));// 采用流体布局
show = new JTextField();// 文本框为25列
show.setHorizontalAlignment(JTextField.RIGHT); // 文本框内文字右对齐
show.setEditable(false); // 文本框不可编辑 list.add(show);
// 创建面板并设置布局
jpMain = new JPanel();
jpRight = new JPanel();
jpLeft = new JPanel();
// 采用的为网格布局方式
jpMain.setLayout(new GridLayout(, ));// 主面板采用的是一行两列的网格布局
jpRight.setLayout(new GridLayout(, , , ));
jpLeft.setLayout(new GridLayout(, , , ));
/*四个参数的作用
* rows - 该 rows 具有表示任意行数的值零
* cols - 该 cols 具有表示任意列数的值零
* hgap - 水平间距
* vgap- 垂直间距
*/
list.add(jpMain);
jpMain.add(jpLeft);
jpMain.add(jpRight);
// 创建0~9按钮对象
for (int i = ; i >= ; i--) {
jbNum[i] = new JButton(String.valueOf(i));
jbNum[i].setForeground(Color.BLUE);
jpLeft.add(jbNum[i]);// 左侧布局
jbNum[i].addMouseListener(this);
}
dight = new JButton(".");
sign = new JButton("±");
jpLeft.add(sign);
jpLeft.add(dight);
// 左侧布局完成 // 右侧布局开始
add = new JButton("+");
sub = new JButton("-");
multiply = new JButton("*");
divide = new JButton("/");
c = new JButton("CE");
equal = new JButton("=");
mod = new JButton("%");
sqrt = new JButton("sqrt");
jpRight.add(divide);
jpRight.add(sqrt);
jpRight.add(multiply);
jpRight.add(mod);
jpRight.add(sub);
jpRight.add(c);
jpRight.add(add);
jpRight.add(equal);
// 右侧布局完成 // 给所有按钮注册监听器
add.addMouseListener(this);// 加
sub.addMouseListener(this);// 减
multiply.addMouseListener(this);// 乘
divide.addMouseListener(this);// 除
c.addMouseListener(this);// 清除
equal.addMouseListener(this);// 等于
mod.addMouseListener(this);// 求余
sqrt.addMouseListener(this);// 求根号
dight.addMouseListener(this);// 小数点
sign.addMouseListener(this);// 正负号 list.setVisible(true);// 显示 } public void mouseClicked(MouseEvent e) {
// 0~9的输入
// 最重要的方法-- getSource(),返回产生某事件的对象
if (e.getSource() == jbNum[]) {
input(, e);
}
if (e.getSource() == jbNum[]) {
input(, e);
}
if (e.getSource() == jbNum[]) {
input(, e);
}
if (e.getSource() == jbNum[]) {
input(, e);
}
if (e.getSource() == jbNum[]) {
input(, e);
}
if (e.getSource() == jbNum[]) {
input(, e);
}
if (e.getSource() == jbNum[]) {
input(, e);
}
if (e.getSource() == jbNum[]) {
input(, e);
}
if (e.getSource() == jbNum[]) {
input(, e);
}
if (e.getSource() == jbNum[]) {
input(, e);
} // 小数点,正负号,C(清除),等号
if (e.getSource() == dight) {// 小数点
if (show.getText().indexOf('.') == -) {
show.setText(show.getText() + ".");
}
}
if (e.getSource() == sign) {// 正负号
if (show.getText().indexOf("-") == -) {
show.setText("-" + show.getText());
} else {
show.setText(show.getText().replace('-', '\0'));
}
}
if (e.getSource() == c) {// 清除
show.setText("");
sum = ;
i = operator.un;
b = false;
}
// 加减乘除//取余等运算符
if (e.getSource() == add) {
cal(i);
i = operator.add;
b = true; }
if (e.getSource() == sub) {
cal(i);
i = operator.sub;
b = true; }
if (e.getSource() == multiply) {
cal(i);
i = operator.mul;
b = true; }
if (e.getSource() == divide) {
cal(i);
i = operator.div;
b = true; }
if (e.getSource() == mod) {
cal(i);
i = operator.mod;
b = true; } // outer 循环外层==========break outer,跳出外层循环
outer: if (e.getSource() == equal) {//等于
try {
if (i == operator.un) {
b = true;
} else {
if (i == operator.add) {
sum += Double.parseDouble(show.getText()); }
if (i == operator.sub) {
sum -= Double.parseDouble(show.getText()); }
if (i == operator.mul) {
sum *= Double.parseDouble(show.getText()); }
if (i == operator.div) {
if (Double.parseDouble(show.getText()) != ) {
sum /= Double.parseDouble(show.getText()); } else {
show.setText("ERROR");
b = true;
sum = ;
break outer; // 不执行trimIn()方法 屏幕显示错误
}
}
if (i == operator.mod) {
sum %= Double.parseDouble(show.getText());
}
trimIn(sum);
}
} catch (Exception ex) {
show.setText("ERROR");
b = true;
sum = ;
}
sum = ;
i = operator.un;
b = true;
}
} // 用以四则运算和取模的方法
public void cal(operator i) {
try {
if (show.getText() != "ERROR") {
if (i == operator.un) {
sum = Double.parseDouble(show.getText());
}
if (i == operator.add) {
sum += Double.parseDouble(show.getText());
trimIn(sum);
}
if (i == operator.sub) {
sum -= Double.parseDouble(show.getText());
trimIn(sum);
}
if (i == operator.mul) {
sum *= Double.parseDouble(show.getText());
trimIn(sum);
}
if (i == operator.div) {
if (Double.parseDouble(show.getText()) != ) {
sum /= Double.parseDouble(show.getText());
trimIn(sum);
} else {
// 出现0后,把一切数据重置 特别注意,除数不能为0
show.setText("ERROR");
sum = ;
b = true;
i = operator.un;
}
}
// 取余
if (i == operator.mod) {
sum %= Double.parseDouble(show.getText());
trimIn(sum);
} }
} catch (Exception ex) {
show.setText("ERROR");
b = true;
}
} // 点击数字输入
public void input(int i, MouseEvent e) {
if (b == true) {
show.setText(String.valueOf(i));
b = false;
} else {
// 判断0和.来清除整数时后面的点
if (show.getText().indexOf('') == && e.getSource() != dight) {
show.setText(String.valueOf(i));
} else {
show.setText(show.getText() + String.valueOf(i));
}
}
} // sum的显示,整数的去掉小数点和0
public void trimIn(double sum) {
// if (show.getText().indexOf('.') != -1 &&
// show.getText().endsWith("0")) {
// show.setText((String.valueOf(sum).substring(0, String.valueOf(sum)
// .indexOf('.'))));
// } else
if (String.valueOf(sum).indexOf('.') != -
&& String.valueOf(sum).endsWith("")) {
show.setText((String.valueOf(sum).substring(, String.valueOf(sum)
.indexOf('.')))); } else if (Double.isNaN(sum)) {
show.setText("ERROR"); // 不 是数字时 屏幕显示错误,并把sum置于0 运算符置UN
b = true;
sum = ;
i = operator.un;
} else if (Double.isInfinite(sum)) {
show.setText("ERROR"); // 出现infinite(无限大)时显示错误SUM置0运算符置UN
b = true;
sum = ;
i = operator.un;
} else {
show.setText(String.valueOf(sum));
}
} /**
* @param args
*/
public static void main(String[] args) { Calc c = new Calc();
c.display();
} }

语言的学习不要把它当作是一种任务,把她当作你的情人,为了优化代码,你需要为她测试千千万万次。当然,一个人学习的时候是非常的枯燥的,最好的方法是找一两个好友,一起学习,一起讨论。这样比你自己一个人学习效率要高很多,同时也能帮你节约时间,一起讨论的结果 印象也会更加深刻。更加有利于自己的学习,一旦形成了这样的良性循环,学习其他语言都是非常迅速的。

不要害怕问人,同时也不要什么都问,一定要经过自己的简单思考之后再问,问题出在哪里,你自己要知道,不要一上来就说、什么也不知道。大家都是相互学习,水平也都是差不多。不存在嘲笑的意思。

同时,我们班有些同学是在实验室里面的,希望大家可以充分利用实验室里面的资源。我在16栋741 ,不过是有点远而已,但是如果能够多走点路换来一个好的学习环境的话,我是愿意的。

事在人为,希望大家珍惜时间,祝大家学习愉快!!!

java计算器的更多相关文章

  1. java 计算器SWT/RAP(版本3)键盘鼠标兼容

    java 计算器SWT/RAP(版本3)键盘鼠标兼容,之前版本也对,但存在线程失效问题,当多人访问时,就容易线程失效,一直犯得一个错误就是一直用static变量和static方法, 之前加了什么js界 ...

  2. 结对项目3-功能增强型带基本函数计算java计算器

    -----------------------------------------------------实验报告------------------------------------------- ...

  3. java计算器项目

    简单的java计算器项目   题目:java计算器项目 一. 题目简介: 一个能进行加减乘除四则运算的小程序 Github链接:https://github.com/lizhenbin/test/tr ...

  4. Java计算器的图形界面应用程序

      JAVA计算器的图形界面应用程序 题目简介: 整体分析: 实验代码: /*部分使用插件做界面*/ import java.awt.EventQueue; import javax.swing.JB ...

  5. Java计算器的简易实现(+-*/)

    java计算器的简易实现(+-*/) import java.util.Scanner; /* 写一个计算器 实现加减乘除四个功能 并且能够用循环接收新的数据,通过用户交互实现 写四个方法 + - * ...

  6. java设计之简单的JAVA计算器

    做这个东西主要是为了练习一下以前学习过的java Swing,所以那些复杂的算法就没有加载到里面去........ 先展示一下效果....,额,当然不是这个样子....   ---> 代码: p ...

  7. java计算器 图形用户界面 精简版

    package com.rgy.entity; import java.awt.*; import java.awt.event.*; @SuppressWarnings("serial&q ...

  8. Java计算器1.0版

    此版本只是设计了页面,还没有实现事件监听   代码: package com.niit.javagui; import java.awt.Button; import java.awt.FlowLay ...

  9. Java计算器(结对)

    一:题目简介 我们要做的是一个多功能计算器,Java程序编辑器是:图形界面.线程.流与文件等技术的综合应用. 图形界面的实现:考虑到简单.实用.高效等特点,就选择了Swing来完成实现,在选择组件上, ...

随机推荐

  1. C#核编之System.Environment类

    在前面的例子中用来了Environment.GetCommandLineArgs()这个方法,这个方法就是获取用户的命令行输入,是Environment类的方法之一,该方法的返回值是string[]  ...

  2. MYSQL定时创建表分区

    MYSQL定时创建表分区 一.存储过程-表分区-----------------------------------------------------------------需求: 每月创建一个分区 ...

  3. 解决apache启动问题:httpd: Could not reliably determine the server's fully

    httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for Se ...

  4. hdu 4635 Strongly connected 强连通

    题目链接 给一个有向图, 问你最多可以加多少条边, 使得加完边后的图不是一个强连通图. 只做过加多少条边变成强连通的, 一下子就懵逼了 我们可以反过来想. 最后的图不是强连通, 那么我们一定可以将它分 ...

  5. CeontOS7安装ansible

    安装方法一. 第一步:安装epel rpm -ivh http://mirror.pnl.gov/epel/7/x86_64/e/epel-release-7-5.noarch.rpm 第二步:安装a ...

  6. Delphi中的Rtti函数

    TTypeKind,类型类别,tkclass,tkinteger,tkstring等.类,属性都是一种类型. ttypedata,是一个record包括ttypekind.是一个类的描述.TTypeK ...

  7. nginx 通过rsyslog发日志 rsyslog服务器挂掉 日志丢失问题

    nginx 配置: user nginx; worker_processes 1; syslog local5 nginx-zjzc01; rsyslog 服务器收到的消息: -rw-r--r-- 1 ...

  8. poj2608---几个字母映射到同一个数字

    #include <stdio.h> #include <stdlib.h> #include<string.h> ]={,,,,,,,,,,,,,,,,,,,,, ...

  9. [LeetCode][Python]String to Integer (atoi)

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com'https://oj.leetcode.com/problems/string- ...

  10. oracle job 定时执行 存储过程

    oracle job 定时执行 存储过程   一:简单测试job的创建过程案例: 1,先创建一张JOB_TEST表,字段为a 日期格式 SQL> create table JOB_TEST(a ...