扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
作为一个Java开发攻城狮(lao si ji),我可以负责任地告诉你,多看多写~
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网站空间、营销软件、网站建设、鱼峰网站维护、网站推广。
首先,鉴于题主你说你是刚接触地阶段,我并不推荐你你上来就要写工业级或者企业级的代码,当下的话应该是迅速积累项目经验,快速掌握java web的开发流程为主,可以网上看看什么视频教程,有些还是能学到规范的。
分享一下我的经历吧~
读大学的时候我接一些外包【朋友介绍】,一开始也很虚啊,觉得这里不对,那里不对的。写得多了,慢慢理解整个开发流程后,就觉得也就是增删改查嘛,没什么的。每次都要写,好麻烦啊,既然这样,不如自己造一些轮子,后来就是项目多了,又造了一些轮子,然后做了系列的封装。期间穿插读了 重构和effective java两本书,代码方法保持整洁,但一些代码上还是不规范。
再后来,学习了java的一些高级特性,反射、自省【提高了写代码250%的效率】以及参考了部分阿里的规范,感觉逐渐能写出比以前看上去优雅的代码了。
接下来的一段时间,因为兴趣的原因,研究了一下三大框架,自己强行撸了三个阉割版。回去看源码的时候,发现spring写得真的太优雅了,然后又小小改了一下风格。
最后,出来工作了,哦谢特~ 大家写得什么鬼啊~ 什么规范都不参照~ 简直内心爆炸,一万点伤害~ 好吧,我还是照着我原先的思路,搞一搞~
所以说,工业级、企业级代码不是每个公司都有,但是对自身有要求是好事啊~ 你也别急,慢慢写,也能逐渐规范起来~ 只是现在,不合适~ 加油~
还有问题的话,欢迎联系我~
给你一个前几天才帮人写的
“计算整钱兑零”。程序要求用户输入一个双精度数代表总元数,就会列出总值与其等价的1元币、二角五分币、5分币和1分币的数目。程序报告的数目是1元币的最大数、其次是二角五分币的最大数,等等,依此类推。只显示非零的单位。对单个单位显示单数单词,对多于一个单位的显示复数单词
import java.util.Scanner;
public class MoneyCalculate {
public static void main(String[] args) {
int max100 = 0;
int max25 = 0;
int max5 = 0;
int max1 = 0;
double money = getMoneyFromInput();
String str = String.valueOf(money).trim();
String[] ary = str.split("\\.");
max100 = Integer.parseInt(ary[0]);
if(ary.length == 2){
int fen = Integer.parseInt(ary[1]);
if(ary[1].trim().length() == 1){
fen = Integer.parseInt(ary[1]) * 10;
}
max25 = fen / 25;
if(fen % 25 != 0){
fen = fen % 25;
}else{
fen = 0;
}
max5 = fen / 5;
max1 = fen % 5;
}
StringBuilder sb = new StringBuilder(money + " = ");
if(max100 != 0){
sb.append(max100);
sb.append("*1 ");
}
if(max25 != 0){
sb.append(max25);
sb.append("*0.25 ");
}
if(max5 != 0){
sb.append(max5);
sb.append("*0.05 ");
}
if(max1 != 0){
sb.append(max1);
sb.append("*0.01 ");
}
System.out.println(sb.toString());
}
private static double getMoneyFromInput() {
Scanner scanner = new Scanner(System.in);
return scanner.nextDouble();
}
}
-----------
2.49
2.49 = 2*1 1*0.25 4*0.05 4*0.01
-----------
2.5
2.5 = 2*1 2*0.25
-----------
37.23
37.23 = 37*1 4*0.05 3*0.01
-----------------
123.569
123.569 = 123*1 22*0.25 3*0.05 4*0.01
我有计算器程序
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 继承于 JFrame,是计算器的界面
*/
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 为空,则表示创建一个空面板。否则创建一个按钮。
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,"不能用零作除数","出错了",JOptionPane.OK_OPTION);
//e.printStackTrace();
}
}
}
// 当按下 +-*/ 时(这里也可以扩展成其他中间操作符)
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);
}
}
我来,代码十分钟后加上来.
(贴上来了)你不选我,我就跟你拼了!!!!! (仅针对没有奖的时候,现在随你了)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
public static String getNumber(String message){
//从键盘输入
System.out.println(message);
String str=null;
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
try {
str=buf.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
//叛断输入的是不是一个数
public static String checkNumber(){
String str=null;
str=getNumber("请输入一个数: ");
int number=0;
try {
number=Integer.parseInt(str);
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
System.out.println("您输入的不是一个数...");
System.exit(1);
}
return str;
}
public static void isOrNotFiveAndHuiyan(){
int sum=0;
String str=checkNumber();
if(str.length()!=5){
System.out.println("不是一个五位数...");
System.exit(0);
//判断是不是五位数
}else{
System.out.println("这是一个五位数...");
}
String str1="";
for(int i=0;istr.length();i++){
str1+=str.charAt(str.length()-i-1);
}
if(str1.equals(str)){
System.out.println("这是一个回文数: ");
//判断是不是回文数
}else{
System.out.println(str+","+str1);
System.out.println("这不是一个回文数: ");
}
for(int i=0;istr.length();i++){
sum+=Integer.parseInt(str.charAt(i)+"");
}
System.out.println("这个回文数的各位和为: "+sum);
}
public static void main(String[] args){
isOrNotFiveAndHuiyan();
}
}
百度百科是这样介绍java的:
Java是一门面向对象编程语言,不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 [1] 。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 [2] 。
Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 [3] 。
简单的说:java就是一门语言,是计算机和我们的沟通语言,计算机可以懂Java这门语言。我们学会java就意味着我们可以和计算机进行沟通。
经过了多年的发展,Java早已由一门单纯的计算机编程语言,演变为了一套强大的技术体系。是的,什么是Java,我想技术体系四个字应该是最好的概括了吧。Java设计者们将Java划分为3种结构独立但却彼此依赖的技术体系分支,它们分别对应着不同的规范集合和组件:
Java SE(标准版),主要活跃在桌面领域,主要包含了Java API组件。
Java EE(企业版),活跃在企业级领域,除了包含Java API组件外,还扩充有Web组件、事务组件、分布式组件、EJB组件、消息组件等,综合这些技术,开发人员完全可以构建出一个具备高性能、结构严谨的企业级应用,并且Java EE也是用于构建SOA(面向服务架构)的首选平台。
Java ME(精简版),活跃在嵌入式领域,称之为精简版的原因是,它仅保留了Java API中的部分组件,以及适应设备的一些特有组件。
上面讲到Java技术体系的分支,那既然Java是一种技术体系,我们来看一下组成这种技术体系的技术:
Java编程语言
字节码
Java API,包括Java API类库和来自商业机构以及开源社区的第三方类库
Java虚拟机
抽象类的应用
package com.test.sample;
/**
* 1抽象类和最终类的使用
* ⑴ 定义一个抽象类Shape用于描述图形,具有“名称”(name)
* 属性以及计算其面积和周长的两个抽象方法GetArea()和GetLength()。
* 定义一个最终类Circle继承自类Shape,增加了一个描述半径的属性radius及带参的构造函数用于该类对象的初始化操作,
* 同时实现了Shape类中的两个抽象方法来计算圆的面积和周长。
* 定义一个最终类Rectangle继承自类Shape,
* 增加了两个属性length和width用于描述矩形的长和宽及带参的构造函数用于完成对该类对象的初始化,
* 同时实现了Shape类中的两个抽象方法来计算矩形的面积和周长。
* @author Administrator
*
*/
public abstract class Shape {
public static double PI=3.14;
public String name;
public abstract double GetArea();
public abstract double GetLength();
}
=================================================
package com.test.sample;
/**
* 用于圆的子类
* @author Administrator
*
*/
public class Circle extends Shape {
private double radius;
public Circle(String name,double radius)
{
this.radius=radius;
this.name=name;
}
@Override
public double GetArea() {
// TODO Auto-generated method stub
return PI*radius*radius;
}
@Override
public double GetLength() {
// TODO Auto-generated method stub
return 2*PI*radius;
}
}
===================================================
package com.test.sample;
/**
* 矩形
* @author Administrator
*
*/
public class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(String name,double length,double width)
{
this.name=name;
this.length=length;
this.width=width;
}
@Override
public double GetArea() {
// TODO Auto-generated method stub
return length*width;
}
@Override
public double GetLength() {
// TODO Auto-generated method stub
return 2*(length+width);
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流