java 实现简单的 ATM 类

首先自己也很久没有写 java ,最近给别人出了一道 java 的题目,要求也就是实现一个简单的 ATM ,当作复习,我也自己写了一个这样的 ATM 类。

  • 需要验证密码
  • 查询功能
  • 存款功能
  • 转载功能

真的 ATM 使用 6 位的数字密码,但我自己做的使用了 String ,其中一个原因是考虑到 Stringequals 方法的运用。当然为了测试,我也增加了一些自己的想法,例如缓存一个 instance 来模拟转帐操作。下面的代码,基本逻辑算是非常简单的(因此注释什么的我也没写了),但还是可以继续优化,例如判断输入是否符合 intString ,此处我只是给出一个简单的答案而已。

Read More

新手指南: 新手应该知道的 26 个命令

AUTHOR: Locez
VERSION: 1


当你进入了 Linux 的世界,在下载、安装 了某个 Linux 发行版,体验了 Linux 桌面并安装了一些你喜爱和需要的 软件 之后,应该去了解下 Linux 真正的魅力所在:命令行 。每一个命令其实就是一个程序,借助这些命令,我们可以办到非常多的事情。下面将会为大家介绍一下几个常用的命令。

Read More

新手指南: 手把手教你安装 Ubuntu 和 Fedora

AUTHOR: Locez
VERSION: 1

Linux 由于开源,所以具备可定制性,因此衍生了许多发行版.Ubuntu 和 Fedora 算是其中对新手比较友好的两个发行版,主要是其安装较为简单,用户群多,有问题搜索出相关的信息或者找前辈解决。此文为 Linux 新手准备,通过展示整个安装过程来使 Linxu 新手完成安装 Ubuntu 或 Fedora ,也恳请各位前辈指出不足之处。

阅读建议


  • 本文将包含 Ubuntu 和 Fedora 两个发行版的安装,请先通篇浏览全文,再决定安装哪个发行版,并且配图有相应的文字说明,请不要忽视。
  • 如果你是一位新手,强烈建议使用虚拟机操作,如果你相信自己可以解决问题,也可使用 UltraISOUSBWriterdd命令写入 U 盘,进行实体机安装,此处不详述。
  • 有任何问题都可以加入 Linux中国新手村 QQ 群提问,QQ 群号 198889109 ,验证请到 linux.cn 主页获取 。

Ubuntu 简介


Ubuntu 是一个基于 Debian 的 GNU/Linux 操作系统,支持 X86 、64以及 PPC 架构。Ubuntu 每隔六个月发布一个版本,即每年的四月和十月,本文使用的是 15.04 64-bit 版本,Ubuntu 对于新手应该是比较友好的一个 Linux 发行版,中文本地化也做的不错,有开箱即用的感觉。因为 Ubuntu 近几年用户群的增加,多了很多对于新手有用的资料,因此请不用担心遇到问题无法解决,善用搜索和提问,将使你更快速地成长。

Read More

Arch Linux 下的 QQ 解决方案

AUTHOR: Locez
VERSION: 4
UPDATE: 2015-08-31

##QQ 6.3 由于版本低,已不能登录,以下教程已不适用,有想要折腾 wine QQ 的仅供参考

Linux 上面玩 QQ 一直都是一个问题。Wine 算是一个解决方案,但是也有不少人失败了。由于 QQ 的特殊性,采取了一系列的保护措施,导致 QQ 这个 Windows 程序非常复杂,因此 Wine 在运行 QQ 时表现差强人意。本文将要安装的是 QQ6.3 ,更高的版本除非对 QQ 做出修改,否则很难安装成功,即使成功了,问题也挺多的(笔者已试验过 QQ7.4 安装)。写这个的目的主要是方便有人遇到问题截图提问,毕竟 Linux 的普及工作还得靠大家,对于日常聊天还是建议使用手机QQ 。

本文环境


  • Arch Linux (其他发行版仅供参考)
  • KDE4 & LXDE & GNOME (其它请自测)

准备工具


  - Wine
  - winetricks

简介


  • Wine 是一个在类 Unix 系统中运行 Microsoft Windows 程序的软件, Wine 的全称是 Wine Is Not Emulator 意为 Wine 不是一个模拟器,它通过 API 转换技术做出 Linux 上对应于 Windows 的函数,从而调用 DLL 运行 Windows 程序。
  • winetricks 是一个 script ,可以用来下载和安装各种在 Wine 运行时需要的部分 DLL 和框架。如 .NETVisual C++ runtime library 或微软和其他公司的闭源程序,使用 winetricks 你可以快速安装某些常用的Windows程序。

Read More

CodinGame-Tron Battle

IDE CodinGame

在viz的叙说下玩了一下,写了一段烂代码,但是还是有点用途的,至少不会马上就挂啊!!

Tron Battle,需要Player编写一段程序来移动,有点类似于贪吃蛇,不可以碰墙,也不可以碰自己,只能往空位的地方走,最大的不同在于Player是自己编写程序来进行移动,并且每次都有判断时限哦(100ms=0.1s),否则就TimeOut了,我这代码也会TimeOut,具体的有的地方还可以改进!这游戏如果可以的话应该是可以进行攻击以及防御的,根据对方的路线限制其行动。这样说来这其实应该和AI(人工智能)能扯上关系,有兴趣的可以去玩玩哦。

地址:www.codingame.com

上不去的可以试下翻墙!

下面贴上自己的Java版代码,写的不好,判断什么都是最简单的,实在没有时间想复杂的了!

Read More

JNI-Java Native Interface

Java提供了JNI机制,用来弥补与平台无关的特性,可以使用C/C++编写本地代码生成动态连接库交由Java调用。

首先创建一个NativeHelloWorld.java文件,包含以下内容;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//java本地方法要由native声明
public class NativeHelloWorld{
//使用静态加载块加载dll
static{
System.loadLibrary( " NativeHelloWorld " );
}
//native声明的start方法,交由c/c++实现,因此无需包含方法体;
native void start(String s);
public static void main(String[] args)
{
//实例化对象并调用start方法;
new NativeHelloWorld().start( " I am loaded by Native code of c++ " );
}
}

Read More

URLClassLoader加载类

ClassLoader提供了一个URLClassLoader实现类,该类是系统类加载器和扩展类加载器的父类。
URLClassLoader可以从本地二进制文件加载类,也可以从远程主机获取二进制文件加载类。

构造器

1
2
3
4
URLClassLoader(URL[] urls):使用parent(父类)加载器创建一个ClassLoader对象,该对象将从urls所指定的系列路径查询并获取类。

URKClassLoader(URL[] urls,ClassLoader paremt):使用指定父类加载器创建一个ClassLoader对象。

Read More

数字转换成人民币大写读法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
{
//汉字数字
public static String[] han={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
//单位
public static String[] unit={"元","十","百","千"};
//单位
public static String[] xunit={"角","分"};
//分割整数与小数部分,返回字符串数组
public static String[] divide(double num)
{
long zheng = (long)num;
long xiao = Math.round((num-zheng)*100);
if(xiao!=0)
{
return new String[]{zheng+"",xiao+""};
}
else
{
return new String[]{zheng+"",null};
}
}
//转换成汉字,4位数
public static String toHan(double number)
{
//使用divide方法得到分割后的整数与小数部分
String[] arr=Convert.divide(number);
//整数部分
String numStr=arr[0];
//小数部分
String xiaoStr=arr[1];
String result="";
//大写字符串长度
int numlen=numStr.length();
for (int i=0;i<numlen;i++)
{
//在ASCII码中,字符串数字的ASCII码-48得到相应的数字ASCII码
//String.charAt(int num)方法得到指定位置的字符值
int num=numStr.charAt(i)-48;
//数字不为0,则添加单位,否则不添加
if(num!=0)
{
result+=han[num]+unit[numlen-1-i];
}
else
{
result+=han[num];
}
}
//若存在小数部分则进行处理
if(xiaoStr!=null)
{
for (int i=0;i<2;i++)
{
int num=xiaoStr.charAt(i)-48;
result+=han[num]+xunit[i];
}
}
return result;
}

public static void main(String[] args)
{
System.out.println(toHan(6521.1));
}
}
/*运行结果输出如下:
陆千伍百贰十壹元壹角零分
*/