《Java编程语言原理与范例》课后实验源代码.docx

上传人:b****8 文档编号:10590835 上传时间:2023-02-21 格式:DOCX 页数:72 大小:36.20KB
下载 相关 举报
《Java编程语言原理与范例》课后实验源代码.docx_第1页
第1页 / 共72页
《Java编程语言原理与范例》课后实验源代码.docx_第2页
第2页 / 共72页
《Java编程语言原理与范例》课后实验源代码.docx_第3页
第3页 / 共72页
《Java编程语言原理与范例》课后实验源代码.docx_第4页
第4页 / 共72页
《Java编程语言原理与范例》课后实验源代码.docx_第5页
第5页 / 共72页
点击查看更多>>
下载资源
资源描述

《Java编程语言原理与范例》课后实验源代码.docx

《《Java编程语言原理与范例》课后实验源代码.docx》由会员分享,可在线阅读,更多相关《《Java编程语言原理与范例》课后实验源代码.docx(72页珍藏版)》请在冰豆网上搜索。

《Java编程语言原理与范例》课后实验源代码.docx

《Java编程语言原理与范例》课后实验源代码

第一章

实验一

packagech01;

importjava.text.SimpleDateFormat;

importjava.util.Date;

classTimerextendsThread{

privateSimpleDateFormatsdf=newSimpleDateFormat("yyyy年MM月dd日HH:

mm:

ss");

publicvoidrun(){

while(true){

System.out.print("\r现在时间是:

");

Datenow=newDate();

System.out.print(sdf.format(now));

try{

sleep(1000);

}catch(InterruptedExceptione){

e.printStackTrace();

}

}

}

}

publicclassClock{

publicstaticvoidmain(String[]args){

Timertimer=newTimer();

timer.start();

}

}

实验二

packagech01;

importjava.awt.event.MouseAdapter;

importjava.awt.event.MouseEvent;

importjava.util.Random;

importjavax.swing.JButton;

importjavax.swing.JFrame;

publicclassMagicButtonextendsMouseAdapter{

JFramewin;

JButtonbutton=newJButton("你点不到我");

Randomrand=newRandom();

voidinitUI(){

win=newJFrame();

win.setLayout(null);

button.setSize(100,40);

button.addMouseListener(this);

win.add(button);

win.setSize(400,300);

win.setResizable(false);

win.setLocationRelativeTo(null);

win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

win.setVisible(true);

}

publicstaticvoidmain(String[]args){

MagicButtondemo=newMagicButton();

demo.initUI();

}

publicvoidmouseEntered(MouseEvente){

intmouseX=button.getX()+e.getX();

intmouseY=button.getY()+e.getY();

while(true){

intbuttonX=rand.nextInt(win.getWidth()-button.getWidth());

intbuttonY=rand.nextInt(win.getHeight()-button.getHeight());

button.setLocation(buttonX,buttonY);

if(!

button.getBounds().contains(mouseX,mouseY)){

break;

}

}

}

}

第二章

实验一

/*********************************

2.交换两个变量的值(不允许使用中间变量)。

**********************************/

packagech03;

publicclassExp2_2{

publicstaticvoidmain(String[]args){

inta=2,b=3;

ints=a*b;

a=s/a;

b=s/a;

System.out.println("a="+a+",b="+b);

}

}

实验二

/*********************************

3.逆序输出一个7位整数,如8639427输出为7249368(不允许使用循环语句)。

**********************************/

packagech03;

publicclassExp2_3{

publicstaticvoidmain(String[]args){

longa=8639427;

System.out.print(a%10);

System.out.print(a/10%10);

System.out.print(a/100%10);

System.out.print(a/1000%10);

System.out.print(a/10000%10);

System.out.print(a/100000%10);

System.out.print(a/1000000%10);

}

}

实验三

/*********************************

4.对于int型变量a,以最快的速度计算34×a的值。

**********************************/

packagech03;

publicclassExp2_4{

publicstaticvoidmain(String[]args){

inta=3;

intb=(a<<5)+(a<<1);

System.out.println(a+"*34="+b);

}

}

实验四

/*********************************

5.字符型变量ch中存放着一个大小写未知的英文字母,判断其大小写后,将ch的值转为小写或大写字母(不允许使用加减运算符和if语句)。

**********************************/

packagech03;

publicclassExp2_5{

publicstaticvoidmain(String[]args){

charch='E';

ch=(char)((ch&32)==0?

ch|32:

ch&(Integer.MAX_VALUE-32));

System.out.println("ch1="+ch);

}

}

实验5

/*********************************

6.使用嵌套的条件运算符,求a、b、c中的最大者。

**********************************/

packagech03;

publicclassExp2_6{

publicstaticvoidmain(String[]args){

inta=2,b=4,c=3;

intmax=(a>b?

a:

b)>c?

(a>b?

a:

b):

c;

System.out.println("max="+max);

}

}

第三章

实验一

/*********************************

2.使用循环结构逆序输出任意位数的整数。

**********************************/

packagech04;

importjava.util.Scanner;

publicclassExp3_2{

publicstaticvoidmain(String[]args){

Scanners=newScanner(System.in);

System.out.println("输入整数:

");

longn=s.nextLong();

while(n>0){

System.out.print(n%10);

n/=10;

}

}

}

实验二

/*********************************

3.输出以下由数字组成的菱形(要求将输出行数存放于变量中以便随时更改)。

1

121

12321

1234321

12321

121

1

**********************************/

packagech04;

importjava.util.Scanner;

publicclassExp3_3{

publicstaticvoidmain(String[]args){

introws;

Scanners=newScanner(System.in);

System.out.print("输入行数:

");

rows=s.nextInt();

for(inti=-rows/2;i<=rows/2;i++){

System.out.printf("%-"+(3*Math.abs(i)+1)+"s","");

for(intj=Math.abs(i)-rows/2;j<=rows/2-Math.abs(i);j++){

System.out.printf("%-3d",rows/2+1-Math.abs(i)-Math.abs(j));

}

System.out.println();

}

}

}

实验三

/*********************************

4.输出以上由数字组成的三角形(要求将输出行数存放于变量中以便随时更改)。

136101521

2591420

481319

71218

1117

16

**********************************/

packagech04;

importjava.util.Scanner;

publicclassExp3_4{

publicstaticvoidmain(String[]args){

introws;

Scanners=newScanner(System.in);

System.out.print("输入行数:

");

rows=s.nextInt();

intfirstNumOfRow=1,nextNumOfRow;

for(inti=1;i<=rows;i++){

firstNumOfRow+=i-1;

intfirstStepOfRow=i+1;

nextNumOfRow=firstNumOfRow;

for(intj=1;j<=rows+1-i;j++){

System.out.printf("%-4d",nextNumOfRow);

nextNumOfRow+=firstStepOfRow++;

}

System.out.println();

}

}

}

实验四

/*********************************

5.计算多项式8+88+888+8888+88888+...的前8项之和。

输出结果:

98765424

**********************************/

packagech04;

publicclassExp3_5{

publicstaticvoidmain(String[]args){

longsum=0;

for(inti=1;i<=8;i++){

longnum=0;

for(intj=1;j<=i;j++){

num=num*10+8;

}

sum+=num;

}

System.out.println(sum);

}

}

第四章

实验一

/*********************************

1.产生10个100以内的随机整数以填充一维数组,实现以下功能。

①找出最大以及最小值。

②查找给定整数a在数组中最后一次出现的位置,若不存在则提示。

③判断数组是否呈非递减排列。

④将数组元素翻转存放。

**********************************/

packagech05;

importjava.util.Random;

importjava.util.Scanner;

publicclassExp4_1{

int[]init(){

int[]a=newint[10];

Randomr=newRandom();

for(inti=0;i

a[i]=r.nextInt(100);

}

returna;

}

voidprint(int[]a){

for(inti=0;i

System.out.printf("%-5d",a[i]);

}

System.out.println();

}

intfindMax(int[]a){

intmax=a[0];

for(inti=1;i

if(max

max=a[i];

}

}

returnmax;

}

intfindMin(int[]a){

intmin=a[0];

for(inti=1;i

if(min>a[i]){

min=a[i];

}

}

returnmin;

}

intfindLastLocation(int[]a,intx){

for(inti=a.length-1;i>=0;i--){

if(a[i]==x){

returni;

}

}

return-1;

}

booleanisAsc(int[]a){

for(inti=0;i

if(a[i]>a[i+1]){

returnfalse;

}

}

returntrue;

}

voidreverse(int[]a){

for(inti=0;i

inttemp=a[i];

a[i]=a[a.length-i-1];

a[a.length-i-1]=temp;

}

}

publicstaticvoidmain(String[]args){

Exp4_1t=newExp4_1();

int[]a=t.init();

t.print(a);

System.out.println("max="+t.findMax(a));

System.out.println("min="+t.findMin(a));

System.out.print("输入要查找的数:

");

Scanners=newScanner(System.in);

intx=s.nextInt();

inti=t.findLastLocation(a,x);

if(i==-1){

System.out.println(x+"在数组中不存在。

");

}else{

System.out.printf("Lastlocationof%d:

%d。

\n",x,i);

}

if(t.isAsc(a)){

System.out.println("数组是非递减排列!

");

}else{

System.out.println("数组不是非递减排列!

");

}

t.reverse(a);

System.out.println("翻转后的数组:

");

t.print(a);

}

}

实验二

/*********************************

2.将a插入到一个长度不小于10且元素呈递增排列的一维数组中,并保证插入之后的数组依然递增(若a在插入前的数组中存在,则输出提示并忽略)。

**********************************/

packagech05;

importjava.util.Scanner;

publicclassExp4_2{

inta[]={2,4,5,7,9,11,15,17,20,22,Integer.MAX_VALUE};

voidprint(booleanisAfterInsert){

intend=isAfterInsert?

a.length:

a.length-1;

for(inti=0;i

System.out.printf("%-5d",a[i]);

}

System.out.println();

}

intfindInsertLocation(intx){

inti=0;

for(;i

if(a[i]==x){

return-1;

}elseif(a[i]>x){

returni;

}

}

returni;

}

voidinsert(inti,intx){

for(intj=a.length-2;j>=i;j--){

a[j+1]=a[j];

}

a[i]=x;

}

publicstaticvoidmain(String[]args){

Exp4_2t=newExp4_2();

t.print(false);

System.out.print("输入要插入的数:

");

Scanners=newScanner(System.in);

intx=s.nextInt();

inti=t.findInsertLocation(x);

if(i==-1){

System.out.println(x+"在数组中已经存在,放弃插入!

");

}else{

t.insert(i,x);

t.print(true);

}

}

}

实验三

/*********************************

3.找出阶数不小于8的方阵的鞍点值及位置(鞍点值在该行上最大、该列上最小),若无鞍点则提示。

**********************************/

packagech05;

importjava.util.ArrayList;

importjava.util.List;

importjava.util.Random;

importjava.util.Scanner;

/**

*鞍点对象类

*/

classAnDian{

privateintrow;//鞍点所在行下标

privateintcol;//鞍点所在列下标

privateintvalue;//鞍点值

//完全构造方法

publicAnDian(introw,intcol,intvalue){

this.row=row;

this.col=col;

this.value=value;

}

//gettersandsetters

publicintgetRow(){

returnrow;

}

publicvoidsetRow(introw){

this.row=row;

}

publicintgetCol(){

returncol;

}

publicvoidsetCol(intcol){

this.col=col;

}

publicintgetValue(){

returnvalue;

}

publicvoidsetValue(intvalue){

this.value=value;

}

}

/**

*测试类(整体上是若干个并列的2重循环,时间复杂度较3重循环低)

*/

publicclassExp4_3{

int[][]a;//矩阵

intmaxOfRows[];//存放每行的最大值

intminOfCols[];//存放每列的最小值

finalintLIMIT=3;//矩阵元素值的上限(为测试方便此处写死,也可在运行时由用户输入)

//初始化矩阵

voidinitArray(){

Scannerscanner=newScanner(System.in);

System.out.print("输入矩阵行数:

");

intm=scann

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1