由于自己的实验报告 需要用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. ASP.NET仿新浪微博下拉加载更多数据瀑布流效果

    闲来无事,琢磨着写点东西.貌似页面下拉加载数据,瀑布流的效果很火,各个网站都能见到各式各样的展示效果,原理大同小异.于是乎,决定自己写一写这个效果,希望能给比我还菜的菜鸟们一点参考价值. 在开始之前, ...

  2. iOS的Ping++支付接入步骤(详细)

    Ping++ SDK 代码下载地址: https://github.com/CoderLeezhen/PingppDemo 参考链接: https://www.pingxx.com/guidance/ ...

  3. IOS 获取手机各种信息

    /手机序列号      NSString* identifierNumber = [[UIDevice currentDevice] uniqueIdentifier];     NSLog(@&qu ...

  4. C# - 动态连接数据库字符串

    String conStr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|数据库文件.mdf;Integrated ...

  5. Android存储小结

    转自:http://www.liaohuqiu.net/cn/posts/storage-in-android/ android系统自身自带有存储,另外也可以通过sd卡来扩充存储空间.前者好比pc中的 ...

  6. Eclipse 打包过滤 Log.e

    我们在开发时,经常会输出各种日志来debug代码.但是等到应用发布的apk运行时不希望它输出日志. 关闭输出日志Log.v(),Log.i(),Log.w(),Log.v(),Log.e()等 原理: ...

  7. hl7 java 解析

    原文链接 http://blog.csdn.net/ycyangcai/article/details/6643784 Hl7引擎的目标主要是解决将数据按HL7协议的要求标准化,和标准业务的集成和不同 ...

  8. PhotoShop-CS4使用-----如何对psd进行简单切图

    一.如何快速截图 1.如果图片为psd样式   2.要用放大器放大该图,选择放大器,放大后如图 3.开始切图  以其中一个为例,选中你所要选择切的图片 4. 选中后 5.选择文件---新建   6.此 ...

  9. Linux主要发行版本介绍

    Linux主要发行版本介绍 1.Red Hat Linux Red Hat是一个比较成熟的Linux版本,无论在销售还是装机量上都比较可观.该版本从4.0开始同时支持Intel.Alpha及Sparc ...

  10. [问题解决] Could not update ICEauthority file /home/username/.ICEauthority

    错误: Could not update ICEauthority file /home/username/.ICEauthority 发生场景: 虚拟机下的ubuntu server12.04 解决 ...