博文
初学java的两大宝典(2005-11-20 11:06:00)
摘要:初学java最好看一下《张孝祥Java视频教程》,讲课内容深入浅出,详略得当,很适合初学者学习!
再配上《java编程思想》,两大宝典一定能助你成为java高手!......
一个简单计算器的界面设计(2005-11-13 22:38:00)
摘要:import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;
class CalculatorFrame
{
Frame calculatorFrame;
Panel top;
Panel center;
Panel main;
TextField txt;
Button B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,B13,B14,B15,B16;
public CalculatorFrame(String Title,int AppletWidth,int AppletHeight,Applet Calcu)
{
calculatorFrame=new Frame(Title);
top=new Panel();
center=new Panel();
main=new Panel();
txt=new TextField(10);
//窗口设计
center.setLayout(new GridLayout(5,4));
main.setLayout(new BorderLayout());
main.add(top,BorderLayout.NORTH);
&......
如何学习JAVA?[转贴](2005-11-13 13:14:00)
摘要:前言
在ChinaITLAB导师制辅导中,笔者发现问得最多的问题莫过于"如何学习编程?JAVA该如何学习?"。类似的问题回答多了,就萌生了写下本文的想法。到时候再有人问起类似的问题,我可以告诉他(她),请你去看看《JAVA学习之路》。拜读过台湾蔡学镛先生的《JAVA夜未眠》,有些文章如《JAVA学习之道》等让我们确实有共鸣,本文题目也由此而来。
软件开发之路是充满荆棘与挑战之路,也是充满希望之路。JAVA学习也是如此,没有捷径可走。梦想像《天龙八部》中虚竹一样被无崖子醍醐灌顶而轻松获得一甲子功力,是很不现实的。每天仰天大叫"天神啊,请赐给我一本葵花宝典吧",殊不知即使你获得了葵花宝典,除了受自宫其身之苦外,你也不一定成得了"东方不败",倒是成"西方失败"的几率高一点。
"不走弯路,就是捷径",佛经说的不无道理。
今天我们来谈谈如何学习Java
1. JAVA学习路线
1.1 基础语法及JAVA原理
基础语法和JAVA原理是地基,地基不牢靠,犹如沙地上建摩天大厦,是相当危险的。学习JAVA也是如此,必须要有扎实的基础,你才能在J2EE、J2ME领域游刃有余。参加SCJP(SUN公司认证的JAVA程序员)考试不失为一个好方法,原因之一是为了对得起你交的1200大洋考试费,你会更努力学习,原因之二是SCJP考试能够让你把基础打得很牢靠,它要求你跟JDK一样熟悉JAVA基础知识;但是你千万不要认为考过了SCJP就有多了不起,就能够获得软件公司的青睐,就能够获取高薪,这样的想法也是很危险的。获得"真正"的SCJP只能证明你的基础还过得去,但离实际开发还有很长的一段路要走。
1.2 OO思想的领悟
掌握了基础语法和JAVA程序运行原理后,我们就可以用JAVA语言实现面向对象的思想了。面向对象,是一种方法学;是独立于语言之外的编程思想;是CBD基于组件开发的基础;属于强势技术之一。当以后因工作需要转到别的面向对象语言的时候,你会感到特别的熟悉亲切,学起来像喝凉水这么简单。
使用面向对象的思想进行开发的基本过程是:
●调查收集需求。
●建立用例模型。
●从用例模型中识别分析类及类与类之间的静态动态关系,......
设计一个线性时间算法,确定T[0:n]是否有一个主元素。(2005-11-12 23:26:00)
摘要:【实验目的】
掌握熟悉地跪于分治策略算法设计。
【实验内容】
设T[0:n-1]是n个元素的一个数组。对任一元素x,设S(x)={i|T[i]=x}。当|S(x)|>n/2时,称x为T的主元素。设计一个线性时间算法,确定T[0:n]是否有一个主元素。
【实验条件】
Microsoft Visual C++ 6.0
【需求分析】
算法需要求出在数组T[0:n]中出现次数最多的元素x出现的次数k.,如果k>(n+1)/2,则此数组有主元素,否则没有。
【设计原理】
算法需要求出在数组T[0:n]中出现次数最多的元素x出现的次数k.,如果k>(n+1)/2,则此数组有主元素,否则没有。先用Select算法求出数组中第(n+1)/2大的数,然后扫描数组,记录第(n+1)/2大的数在数组中出现的次数,如果k>(n+1)/2,则此数组有主元素,否则没有。
【概要设计】
数据:
a[N]:用于存放数组T[0:n-1];
int sign:如果存在主元素,sign=true;否则:sign=false;
函数:
int Partition(int a[],int p,int t,int x);
//数组划分,将小于等于x的元素移到x左边,大于x的元素移到x右边。
void Swap(int &x,int &y);
//交换元素x和y。
void QuickSort(int a[],int p,int r);
//快速排序。
int Select(int a[],int p,int r,int k);
//线性时间选择,找到第k大的数。
int MainNum(int a[],int p,int r);
//判断是否具有主元素。
【详细设计】
#include<iostream>
#include <ctime>
using namespace std;
//函数声明
int Partition(int a[],int p,int t,int x);
void Swap(int &x,int &y);
void QuickSort(......
我的第一个java程序(2005-11-05 00:25:00)
摘要:【题目】
n 编写一个Application,在屏幕上显示如下的信息:
******************
Welcome
******************
n 把上题改写为Applet。
【Application代码】
import java.util.*;
public class Welcome
{
public static void main(String[] args)
{
System.out.println("*************");
System.out.println("Welcome!");
System.out.println("*************");
}
}......
编写Applet绘制圆形及几个简单java程序(2005-11-05 00:18:00)
摘要:【问题描述】编写Applet,绘制一个圆心为(60,70),半径为50的圆。提示:使用Math.sin(x)和 Math.cos(x)计算正弦和余弦。
【程序代码】
import java.awt.*;
import java.applet.*;
import java.util.*;
public class Circle extends Applet
{
public void paint(Graphics g)
{
for(double angle=0;angle<2*Math.PI;)
{
g.drawString("*",(60+(int)(50*Math.sin(angle))),70+(int)(50*Math.cos(angle)));
angle+=(Math.PI/20.0);
}
}
}
......
在O(n*n)时间内出由n个数组成的序列的最长单调递增子序列。(2005-11-05 00:14:00)
摘要:【实验目的】
练习掌握动态规划算法。
【实验内容】
设计一个O(n*n)时间的算法,找出由n个数组成的序列的最长单调递增子序列。
【实验条件】
Microsoft Visual C++ 6.0
【需求分析】
题目要求在O(n*n)的时间内找出n个数组成的序列的最长单调递增子序列,需要用到排序算法,查找最长公共子序列的算法。
【设计原理】
将数组a复制到数组x,先用排序算法将数组x排序,在调用查找最长公共子序列的算法求出数组a和数组x中的最长公共子序列,因为数组x是单调递增的,所以由此求出来的最长公共子序列就是题设所求的最长单调递增子序列。
【概要设计】
数据:
N:数组元素个数。
a[N]:用于存放数组。
X[N]:复制数组a[N],并排序。
c[i][j]:存储a和x的最长公共子序列的长度。
b[i][j]:记录c[i][j]的值是由哪一个资问题的解得到的。
函数:
int Partition(int a[],int p,int t,int x);
//数组划分,将小于等于x的元素移到x左边,大于x的元素移到x右边。
void Swap(int &x,int &y);
//交换元素x和y。
void QuickSort(int a[],int p,int r);
//快速排序。
void LCSL(int m,int n,int *x,int *y,int **c,int **b);
//计算最长公共子序列长度。
void LCS(int i,int j,int *x,int **b);
根据b[i][j]的内容打印a,x数组的最长公共子序列。
【详细设计】
#include<iostream>
#include<ctime>
using namespace std;
#define N 10
void LCSL(int m,int n,int *x,int *y,int **c,int **b);//计算最长公共子序列长度。
void LCS(int i,int j,int *x,int **b);//根据b[i][j]的内容打印......
在最坏情况下用「3/n-2」次比较找出a[0:n-1]中元素的最大值和最小值(2005-10-16 23:59:00)
摘要:【问题描述】
给定数组a[0:n-1],使设计一个算法,在最坏情况下用「3/n-2」次比较找出a[0:n-1]中元素的最大值和最小值。(《计算机算法设计与分析》,王晓东,2—15)
【算法设计】
1 5 8 2 3 9
5 8 9
8 9
9
求最小值设计与此类似,在此未画出图示。
【算法实现】
void SelectMaxAndMin(int *a,int *b,int n)
{
int j=1,s=1,i=1;
if(n==1) return;
......
关于java中package的设置(2005-10-13 23:45:00)
摘要:今天看《java编程思想》关于设置package一章,书上讲的很详细,于是就照着书上的设置试着建立mypackage。
package就是程序库单元,在一般的java程序中,我们使用关键字import导入整个程序库,例如:
import java.util.*;
这时我们取用的便是所谓的package,这种写法会将java标准公用程序库(utility library,也就是java.util)整个引入。此类导入
(importing)动作的存在理由,也是为了提供命名空间(name space)的管理机制。所有的class成员名劫被互相隔绝。class A的
函数f(),其名称不会和class B()中具有相同标记式的f()相冲突。与此相类似,为了不使class名称发生冲突,于是引入了package
进行管理。
所谓程序库就是一组class文件。其中每个文件都有一个public class,所以每个文件都以一个组件。如果你希望这些组件归属于一个
群组,便可以使用关键字package.
其实你只需在你的程序起始处这么写就可以了:
package mypackage;
这时的 mypackage就是自己创建的一个程序库。
不过习惯上我们会以class开发者的internet域名(的相反顺序)作为package名称的第一部分。比如sina的域名是:www.sina.com
。此时定义sina的package为:com.sina.*。*代表具体的class名。
下面是我在建立自己的package时遇见的问题,希望对大家有所帮助。
首先我写了一个关于简化System.out.println()的程序:
package mypackage;
public class P
{
public static void print(String s)
{
System.out.print(s);
}
public static void println(String s)
{
System.out.println(s);
}
public stat......