if(x%i==0)
returnfalse;
returntrue;
}
main()函数里面的主要函数
intoutTime=0;
for(inti=2;i<=100;i++){
if(IsPrime(i)){//调用判断素数的函数
System.out.print(i+"\t");
++outTime;
if(outTime%5==0)//五个一行
System.out.println();
}
}
(2)运行结果
3.编写程序,输出从公元1900年到2100年所有闰年的年号,每输出5个年号换一行。
判断年是否为闰年的条件是:
①若年号可以被4整除,而不能被100整除,则是闰年;②若年号可以被400整除,也是闰年。
(1)关键算法
思路:
1.(i%4==0&&i%100!
=0)||(i%400==0),若满足该条件则为闰年;
2.输出一次,计数器outTime++,如果outTime%5==0则换行。
intoutTime=0;
for(inti=1900;i<=2100;i++)
if((i%4==0&&i%100!
=0)||(i%400==0)){
System.out.print(i+"\t");
outTime++;
if(outTime%5==0)
System.out.println();
}
}
(2)运行结果
三、实验体会
经过第一个实验以后对java编程语言有了一定认识,java语法大多与C/C++相同,编程思路也基本相同,主要还是在于算法。
实验2Java面向对象程序设计
一、实验目的
掌握Java面向对象程序设计中类、继承、包和接口的概念与应用,能熟练应用方法、类、成员变量等元素。
二、实验内容
1.创建一个复数类Complex,要求如下利用浮点变量表示此类的私有数据。
提供两个构造方法,一个用于此类声明的对象的初始化;一个为默认的无参构造方法。
提供两复数加、减、乘的运算方法。
按格式(a,b)打印复数。
其中a为实部,b为虚部。
(1)关键代码
复数类Complex:
classComplex{
privatefloatRealPart=0f;
privatefloatImaginaryPart=0f;
//构造方法
publicComplex(){
}
publicComplex(floatreal,floatimaginary){
this.RealPart=real;
this.ImaginaryPart=imaginary;
}
//实现加法
publicComplexComplexAdd(Complexc){
ComplexnewComplex=newComplex();
newComplex.RealPart=this.RealPart+c.RealPart;
newComplex.ImaginaryPart=this.ImaginaryPart+c.ImaginaryPart;
returnnewComplex;
}
//实现减法
publicComplexComplexSub(Complexc){
ComplexnewComplex=newComplex();
newComplex.RealPart=this.RealPart-c.RealPart;
newComplex.ImaginaryPart=this.ImaginaryPart-c.ImaginaryPart;
returnnewComplex;
}
//实现乘法
publicComplexComplexMul(Complexc){
ComplexnewComplex=newComplex();
newComplex.RealPart=(this.RealPart*c.RealPart)
-(this.ImaginaryPart*c.ImaginaryPart);
newComplex.ImaginaryPart=(this.RealPart*c.ImaginaryPart)
+(this.ImaginaryPart*c.RealPart);
returnnewComplex;
}
//按格式打印复数的实部和虚部
publicvoidPrint(){
Stringstr="("+this.RealPart+","+this.ImaginaryPart+")";
System.out.println(str);
}
}
main()函数程序关键程序
//实例化
Complexc1=newComplex(1f,2f);
Complexc2=newComplex(3f,4f);
Complexc3=newComplex();
...
c3=c1.ComplexAdd(c2);//c1+c2
System.out.print("c1+c2=");
c3.Print();
c3=c1.ComplexSub(c2);//c1-c2
System.out.print("c1-c2=");
c3.Print();
c3=c1.ComplexMul(c2);//c1*c2
System.out.print("c1*c2=");
c3.Print();
(2)运行结果
2.编程定义一个接口,实现三个数中求最小值和最大值的方法,并将程序存放在mymaths包中。
(1)关键代码
packagemymaths;
importjava.util.Scanner;
interfaceSeekMM{
abstractpublicintMaxNumber(inta,intb);
abstractpublicintMinNumber(inta,intb);
}
classSeekMaxMinimplementsSeekMM{
publicintMaxNumber(inta,intb){
returna>b?
a:
b;
}
publicintMinNumber(inta,intb){
returna
a:
b;
}
}
Main()中的部分代码:
Scannersr=newScanner(System.in);
System.out.print("输入三个int型数据:
");
...
sr.close();
inttempMax=seek.MaxNumber(seek.MaxNumber(x,y),z);
inttempMin=seek.MinNumber(seek.MinNumber(x,y),z);
(2)运行结果
3.创建银行账号Account类,实现存款(balance)的存(deposit)、取(withdraw)和查询(getbalance)等功能。
(1)关键代码
菜单显示:
publicstaticvoidshowMeau(){
System.out.println("/********操作菜单********/");
System.out.println("\t1.存款\n\t2.取款\n\t3.查询余额\n\t4.退卡");
}
main()函数的部分程序:
Accountcustomer=newAccount("李鹏","2014006281","123456");//建立一个示例账户
...
if(strName.equals(customer.getid())&&strPass.equals(customer.getpassword())){
System.out.println("登陆成功!
");
while(true){
showMeau();
System.out.print("请输入你的操作序号:
");
choose=sc.nextInt();
switch(choose){
case1:
System.out.print("请输入存款金额:
");
money=sc.nextDouble();
customer.deposit(money);
break;
case2:
System.out.print("请输入取款金额:
");
money=sc.nextDouble();
customer.withdraw(money);
break;
case3:
customer.getbalance();
break;
case4:
sc.close();
System.out.println("退卡成功...");
break;
default:
System.out.println("输入有误!
");
}
if(choose==4)
break;
}
}
else{
System.out.println("密码或账号错误!
");
sc.close();
}
银行账号Account类:
classAccount{
privateStringname;
privateStringid;
privateStringpassword;
privatedoublebalance;
publicAccount(){}
publicAccount(Stringname,Stringid,Stringpassword){
this.name=name;
this.id=id;
this.password=password;
this.balance=0;
}
//(存)deposit;
publicvoiddeposit(doublemoney){
this.balance+=money;
System.out.println("交易成功!
");
}
//(取)withdraw;
publicvoidwithdraw(doublemoney){
if(this.balanceSystem.out.println("对不起,您的余额不足.");
else{
this.balance-=money;
System.out.println("交易成功!
");
}
}
//(查询)getbalance;
publicvoidgetbalance(){
System.out.println("当前余额为:
"+this.balance+"元");
}
//获取用户名
publicStringgetname(){returnthis.name;}
//获取id
publicStringgetid(){returnthis.id;}
//获取密码
publicStringgetpassword(){returnthis.password;}
}
(2)运行结果
三、实验体会
该部分的实验内容相对简单,与C/C++的整体思路基本没有区别,在语法上面稍有不同。
整体来说这部分的内容相对容易一些。
实验3数组和字符串编程
一、实验目的
1.通过实验,掌握Java语言中数组、字符串程序设计的基本方法。
2.较熟练地掌握Java程序数组的应用、字符串处理操作的方法应用。
二、实验内容
1.编写一个程序,在控制台输入10个数,按大小顺序输出。
(1)关键算法
思路:
在public类中定义函数,通过调用函数对数组操作
publicfinalstaticintN=10;
//输入函数
publicstaticvoidinput(doublearray[]){
System.out.println("请键入"+array.length+"个数字用(空格隔开):
");
Scannercin=newScanner(System.in);
for(inti=0;iarray[i]=cin.nextDouble();
cin.close();
}
//输出函数
publicstaticvoidoutput(doublearray[]){
for(inti=0;iSystem.out.print(array[i]+"");
System.out.println();
}
//冒泡排序函数(<)
publicstaticvoidorder(doublearray[]){
doubletemp;
System.out.println("由小到大排序结果:
");
for(inti=1;ifor(intj=0;jif(array[j]>array[j+1]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
main()中的部分代码:
double[]input_array=newdouble[N];
input(input_array);
order(input_array);
output(input_array);
System.out.println("Main()执行完毕...");
(2)运行结果
2.输入一段字符串,统计其中有多少个单词。
(单词用空格隔开)
(1)关键算法
思路:
编写计算单词数量的函数:
从字符串中依次取出一个字符,该字符非字母和下一个是字母,则单词数量+1;最后判断第一个字符是字母则不再+1,若第一个是字母,则单词数量+1。
//计算单词数量的函数
publicstaticintTotalWord(Stringstr){
charthischar,nextchar;
intwordnum=0;
for(inti=0;ithischar=str.charAt(i);
naxtchar=str.charAt(i+1);
if((!
((thischar>='A'&&thischar<='Z')||(thischar>='a'&&thischar<='z')))&&((nextchar>='A'&&nextchar<='Z')||(nextchar>='a'&&nextchar<='z'))){
wordnum++;
}
returnwordnum;
}
main()函数关键程序:
System.out.println("Wordnumber:
"+TotalWord(strEnglish));
(2)运行结果
3.求一个3*3矩阵对角元素之和。
(1)关键算法
finalintN=3;
int[][]array=newint[N][N];
System.out.println("一个随机3*3矩阵:
");
for(inti=0;ifor(intj=0;jarray[i][j]=(int)(1+Math.random()*100);//随机数1~100
System.out.print(array[i][j]+"\t");
if(i==j)//主对角线
sum1+=array[i][j];
elseif((i+j)==(N-1))//次对角线
sum2+=array[i][j];
}
System.out.println();
}
(2)运行结果
三、实验体会
通过对java的数组和字符串的应用,java在数组和字符串的处理功能上很强大,利用这些可以解决很多问题,不必自己再重新编写某些函数。
实验4图形用户界面编程
一、实验目的
掌握文本组件、按钮和单、复选按钮组件的使用;掌握列表的使用,鼠标、键盘事件的处理;掌握布局控制的方法。
二、实验内容
1.试设计一窗口,内含一个按钮。
开始运行时,按钮显示“ClickMe”字样,当按钮按下时,按钮显示为“ClickMeAgain”字样,再按一次,则按钮显示“ClickMe”字样,依次循环。
(1)关键算法
思路:
利用JButton类中的方法getText()获得按钮的内容字符串,然后利用类String中的方法equals(Stringstr)判断是否和要求字符串相等,如果不相等替换。
classclickDlgextendsJFrame{
JButtonbtn;
JPaneljp;
clickDlg(){
btn=newJButton("ClickMe");
jp=newJPanel();
}
publicvoidload(){
btn.addActionListener(newlsr());
jp.add(btn);
this.add(jp,BorderLayout.CENTER);
this.setTitle("ClickButton");
this.setBounds(100,100,300,80);
this.setVisible(true);
}
classlsrimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
Stringstr=btn.getText();
if(str.equals("ClickMe"))
btn.setText("ClickMeAgain");
else
btn.setText("ClickMe");
}
}
}
(2)运行结果
2.完成图6-1所示的GUI布局管理,不需要实现功能。
(删除)
(1)关键算法
(2)运行结果
三、实验体会
通过对该实验的代码编写之后,学习到了GUI设计,java界面编程的初步知识,明显提升的对该部分内容的兴趣。
在编写代码的过程中,发现图形界面的编程过程并没有想象的容易,因为所有的组件都要靠敲代码来实现,所以要界面的整个美观性相对差一点。
实验5输入与输出
一、实验目的
1.掌握Java两种基本输入/输出流类的使用。
2.掌握Java文件类型的使用。
3.掌握文件的输入、输出方法。
二、实验内容
1.编写程序,利用Java字符流文件输入/输出类,实现将源程序复制到另一个文件中。
(1)关键