JAVA作业 03

动手动脑

一.JAVA的类的对象实例化

1)定义:在面向对象的编程中,通常把用类创建对象的过程称为实例化,其格式为:类名 对象名 = new 类名(参数1,参数2...参数n);

如 Date date=new Date();就是用日期类创建了一个日期的对象,就叫对象的实例化。实例化一个对象 就是为对象开辟内存空间,或者是不用声明,直接使用new 构造函数名(),建立一个临时对象。

2)例子:图1:没有对象实例化

图2:进行了对象实例化:

二.利用线性同余法生成随机数

1)定义:

2)例子:

课后作业

一.组合数问题

1)程序设计思想:1)利用阶乘方法来实现2)利用杨辉三角的递归来实现3)利用递归来实现

2)源代码:

//2016/10/15 XuetongGao

//组合数的三种实现方式

import java.io.*;

public class CombinatorialNumber {

public static void main(String[] args) throws IOException{

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

String num1 = reader.readLine();  String num2 = reader.readLine();

int n = Integer.parseInt(num1);int k = Integer.parseInt(num2);

if(n>=2&&k>1&&(n>=k))

{

int sum1,sum2,sum3;

sum1 = nStratum(n,k);

System.out.println("The combinatorial number of (n,k)is " + sum1);

sum2 = triangleYH(n,k);

System.out.println("The combinatorial number of (n+1,k)is " + sum2);

sum3 = digui(n,k);

System.out.println("The combinatorial number of (n,k)is " + sum3);

}

else if(n>=2&&k==1)

{

System.out.println("The combinatorial number of (n,k)is " + n);

}

else if(n==1&&k==1)

{

System.out.println("The combinatorial number of (n,k)is 1.");

}

else

{

System.out.println("Error!please input again!");

}

}

public static int nStratum(int n,int k)//用阶乘来实现组合数问题

{

int n_stratum=1,k_stratum=1,n_k_stratum=1,sum=1;

int i;

for(i=1;i<=n;i++)            {       n_stratum=n_stratum*i;      }

for(i=1;i<=k;i++)            {       k_stratum=k_stratum*i;      }

for(i=1;i<=(n-k);i++)       {       n_k_stratum=n_k_stratum*i;      }

sum = n_stratum/(k_stratum*n_k_stratum);

return  sum;

}

public static int digui(int n,int k)//用递归来实现组合数问题

{

if(k==1)    return n;

else

{

int sum = (digui(n,k-1))*(n-1)/k;

return sum;

}

}

public static int triangleYH(int n,int k)//用杨辉三角来实现组合数问题

{

int sum,sum1,sum2;

sum1 = digui(n,k);

sum2 = digui(n,k-1);

sum = sum1+sum2;

return sum;

}

}

3)实验截图

二.汉诺塔问题

1)程序设计思想:

(1)在主方法中设置输入流,输入盘子的个数,引入solveTowers方法

(2)solveTowers方法:若盘子数为1,则不继续递归,结束;若不为1,则将若剩余盘子数不为1 则继续递归 :先将a上上边n-1个盘子移动到b上,将最大的圆盘移动到C上,将B上的圆盘移动到C上;

(3)在主方法中输出。

2)源代码:

//2010/10/14 XuetongGao

//用递归方式解决汉诺塔问题

import java.io.*;//引入包

public class TowersOfHanoi

{

public static void main( String[] args ) throws IOException//扔出流

{

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));//设定输入流

String num = reader.readLine();//输入

int n = Integer.parseInt(num);//强制类型转化

solveTowers(n,‘A‘,‘B‘,‘C‘);//引用方法

}

public static void solveTowers(int n,char a,char b,char c)//方法:解决汉诺塔问题

{

if (n == 1)//若剩余盘子数为1 则不继续递归 结束

System.out.println("盘 " + n + " 由 " + a + " 移至 " + c);

else {//若剩余盘子数不为1 则继续递归 :先将a上上边n-1个盘子移动到b上

solveTowers(n - 1, a, c, b);//算法:将上n-1个圆盘移动到B上

System.out.println("盘 " + n + " 由 " + a + " 移至 " + c);//算法:将最大的圆盘移动到C上

solveTowers(n - 1, b, a, c);//算法:将B上的圆盘移动到C上

}

}

}

3)实验截图:

三.运用递归判断某个字符串是否回文

1)程序设计思想:在主方法中调用判断是否为函数的方法,该函数的参数为(字符串,前对应字符,后对应字符),若两字符的位置不相等,则递归判断一直到两字符的位置相等,同时若两字符相等返回真,若不相等,则返回假。

2)源代码:

//2016/10/15 XuetongGao

//判断字符串是否回文

public class Palindrome {

public static boolean isPalindrome(String s,int i,int j)

{   if(i>j)    throw new IllegalArgumentException();

if(i == j)    return true;

else{    return (s.charAt(i)==s.charAt(j))&& isPalindrome(s,i+1,j-1);   }

}

public static void main(String[] args) {

String test = "ABCBA";

int i=0;   int j=test.length()-1;

System.out.println(test + " is Palindrome?" + Palindrome.isPalindrome(test, i, j));

}

}

3)实验截图:

时间: 2024-11-08 19:53:46

JAVA作业 03的相关文章

Java作业03 (动手动脑和课后作业1.使用下面定义的类,以下代码输出结果是什么?)

1.使用下面定义的类,以下代码输出结果是什么? 输出结果: 请依据代码的输出结果,自行总结Java字段初始化的规律. Java初始化的地方有两个:初始化块和构造函数,其中初始化又分为实例初始化块和静态初始化块,实例初始化块没有关键字修饰,而静态初始化块由static修饰. 执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面” 执行类的构造函数:类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行.因此,适合于封装那些“对象创建时必须执行的代码”. 2.

Java学习03

Java学习03 1.java面试一些问题 一.什么是变量 变量是指在程序执行期间可变的数据.类中的变量是用来表示累的属性的,在编程过程中,可以对变量的值进行修改.变量通常是可变的,即值是变化的 二.什么是函数 1.实现特定功能的一段代码2.可以多次循环使用. 三.什么是数组 数组是用来存储相同数据类型的数据集合,可使用共同的名称来应用数组中的数据.数组可以存储任何类型的数据,包括原始数据类型和对象. 2.循环阅读的技巧 外层循环做一次,内层循环做一遍 3.1234转变为4321 int rig

Java基础03 构造器与方法重载(转载)

显式初始化要求我们在写程序时就确定初始值,这有时很不方便.我们可以使用构造器(constructor)来初始化对象.构造器可以初始化数据成员,还可以规定特定的操作.这些操作会在创建对象时自动执行. 定义构造器 构造器(constructor)是一个方法.像普通方法一样,我们在类中定义构造器.构造器有如下基本特征: 构造器的名字和类的名字相同 构造器没有返回值 我们定义Human类的构造器: public class Test{    public static void main(String[

[连载]Java程序设计(03)---任务驱动方式:寻找高富帅和屌丝

1. Sphin x简介 1.1. 什么是全文检索 全文检索是指以文档的全部文本信息作为检索对象的一种信息检索技术 .检索的对象有可能是文章的标题,也有可能是文章的作者,也有可能是文章摘要或内容. 1.2. 介绍 Sphin x是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能 ,使得应用程序更容易实现专业化的全文检索.Sphin x特别为一些脚本语言设计搜索API接口 ,如PHP ,Python,Perl,Ruby等,同时

寒假作业03

寒假作业03 0. 先来闲聊一下 我还记得以前的时候家严经常去某个,呃,著名的电子一条街去买那些各种各样的装系统光盘(或者其他啥的?忘了),基本都是windows的,啥啥纯净版xp,啥雨林木风xp.当然那时候还小,对电脑的印象就是玩游戏,对电脑系统啥的一窍不通(现在也是,哈哈).即便如此,年轻的我还是意识到这些乱七八糟的光盘是有问题的,为啥?装了之后电脑又慢还总死机,于是就再去那条街去买新的盘,如此往复恶性循环,家里老电脑就是这样坏掉的.很明显这个教训并不是十分刻骨铭心,因为新电脑也开始遭受各种

关于提高字节流问题暨第四次java作业

import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException; public class CopyFile { /** * @param args */ public static void main(String[] args) { try { FileInputStream fis = new FileInputStream ("a.mp3"); FileOutpu

java作业4

(一)  请查看String.equals()方法的实现代码,注意学习其实现方法.(发表到博客作业上) (二)  整理String类的Length().charAt(). getChars().replace(). toUpperCase(). toLowerCase().trim().toCharArray()使用说明 Length():获取字串长度 String s1 = "Welcome to java"; System.out.println("s1's length

java作业3

一.构造方法 1.源代码 public class Test{ public static void main(String[] args){ Foo obj1=new Foo(); } } class Foo{ int value; public Foo(int initValue){ value=initValue; } } 2.程序截图 3.结果分析 若构造方法已提供,则系统不再提供默认构造方法. 二.JAVA字段初始化 1.源代码 public class InitializeBlock

java作业1

编辑路径,但由于JAVA故障 JAVA不能正常安装所以在cmd输入javac产生错误不能正常运行出来 所有作业的文件已经输入,只需要在cmd中运行即可,但是JAVA有问题不能实现只能写出过程没有结果图.