JAVA方法03之动手动脑问题解决
动手动脑1.当JAVA里定义的函数中去掉static后,怎么办?(如下程序,将square()函数的static去掉)
public class SquareIntTest {
    public static void main(String[] args) {
        int result;
        for (int x = 1; x <= 10; x++) {
            result = square(x);
            // Math库中也提供了求平方数的方法
             //result=(int)Math.pow(x,2);
            System.out.println("The square of " + x + " is " + result + "\n");
        }
    }
    // 自定义求平方数的静态方法
    //问:如果不加static,怎么办?
    public static int square(int y) {
        return y * y;
    }
}
因为static 是静态的意思,main是静态的,想加载的时候就加载了,可将函数写在一个新的类中即可,如下所示:
public class SquareIntTest {
    public static void main(String[] args) {
        int result;
        for (int x = 1; x <= 10; x++) {
            result = new Test().square1(x);//非静态
            System.out.println("The square of " + x + " is " + result + "\n");
        }
    }
}
class Test{
    public int square1(int y) {
        return y*y;
  }
}
动手动脑2.编写一个方法,使用纯随机数发生器生成指定数目(比如1000个)的随机整数。
(纯随机数发生器)
程序如下:
//博客园作业-编写一个方法,使用纯随机数产生器生成指定数目(比如1000个)的随机整数。
//李慧,2016.10.15 package boke; import java.util.Scanner; public class SuiJiShu { public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("(此系统用于产生制定数目n的随机整数)");
System.out.printf("请输入n:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(); //纯随机数发生器
int f1=1;
for(int i = 1;i <= n; i++){
f1=((7^5)*f1+0)% (2^10000);
//输出结果
System.out.print(f1+" ");
if(i%10==0)
System.out.println();
}
}
}
其运行结果:

动手动脑3.请看以下代码,你发现了有什么特殊之处吗?
// MethodOverload.java
// Using overloaded methods
//计算平方 public class MethodOverload { public static void main(String[] args) {
System.out.println("The square of integer 7 is " + square(7));
System.out.println("\nThe square of double 7.5 is " + square(7.5));
} public static int square(int x) {
return x * x;
} public static double square(double y) {
return y * y;
}
此程序中出现了两个函数名相同的函数,经运行系统没有报错,答案也是正确的。这是因为,当具备①方法名相同;②参数类型不同,参数个数不同,或者是参数类型的顺序不同,这两个条件的时候,同名函数才是正确的。但是,方法的返回值并不作为方法重载的判断条件。
练习:查看一下JDK中System.out.println()方法,你发现了什么?
System是jdk自带的一个类,他有很多的方法,这些方法都是静态的,也就是static的。System.out.print()就相当于一个函数,它之所以可以不断的重复使用,是因为它可以有不同类型的参数,不同个数的参数,参数的顺序也可以不同。
课后作业1:使用计算机计算组合数
(1)使用组合数公式利用n!来计算

程序如下:
package boke; import java.math.BigInteger;
import java.util.Scanner; public class ZuHeShu { public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("........求组合数C(n,k).........n为下标........");
System.out.print("请输入n,k:");
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int k = scan.nextInt();
if(n<k)
System.out.print("ERROR!");
else
//n!=calculateN2(n);
System.out.print("C("+n+","+k+")="+cN(n)/cN(k)/cN(n-k));
}
public static long cN(int n) {
if(n==1 || n==0){
return 1;
} return n*cN(n-1);
}
}
运行结果是:


(2)使用递推的方法用杨辉三角形计算
package boke;
import java.util.Scanner;
public class ZuHeShu2 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("(杨辉三角做法)........求组合数C(n,k).........n为下标........");
        System.out.print("请输入n,k:");
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int k = scan.nextInt();
        if(n<k)
            System.out.print("ERROR!");
        else{
        //n!=calculateN2(n);
            //size = new Long(s);
            // long A = new Long(CN2(n+1,k)-CN2(n,k-1));
        System.out.print("C("+n+","+k+")=");
        System.out.println(CN2(n+1,k)-CN2(n,k-1));}
    }
    public static long cN(int n) {
        if(n==1 || n==0){
            return 1;
        }
        return n*cN(n-1);
    }
    //杨辉三角的方法递推计算
    public static long CN2(int n,int k){
        long A = cN(n)/cN(k)/cN(n-k);
        return A;
    }
}
其运行结果:


(3)使用递归的方法,用组合数递推公式计算
package boke;
import java.util.Scanner;
public class ZuHeShu3 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("(递归的方法利用公式)........求组合数C(n,k).........n为下标........");
        System.out.print("请输入n,k:");
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int k = scan.nextInt();
        if(n<k || k<1)
            System.out.print("ERROR!");
        else{
        //n!=calculateN2(n);
        System.out.print("C("+n+","+k+")=");
        System.out.println(CN3(n,k));}
    }
    public static long cN(int n) {
        if(n==1 || n==0){
            return 1;
        }
        return n*cN(n-1);
    }
    //递归计算
    public static long CN2(int n,int k){
        if(n==1 || n==0){
            return 1;}
        return cN(n)/cN(k)/cN(n-k);
    }
    public static long CN3(int n,int k){
        if(n == 1 || n == 0)
        {return 1;}
        return (CN2(n+1,k)-CN2(n,k-1));
    }
}
其运行的结果:
        
其如果出现ERROR时,和上述两个例子是属于相同的情况。
课后作业2:递归编程解决汉诺塔问题(用JAVA实现)
//disk是磁盘...sourcePeg源PEG...destinationPeg目标PEG...tempPeg临时PEG package work; public class Hanoi
{
// 递归移动塔之间的磁盘
public static void solveTowers( int disks, int sourcePeg,
int destinationPeg, int tempPeg )
{
// 移动的时候
if ( disks == 1 )
{
System.out.printf( "\n%d ——> %d", sourcePeg, destinationPeg );
return;
} // 递归步骤--移动(磁盘1)磁盘sourcepeg
// to tempPeg using destinationPeg
solveTowers( disks - 1, sourcePeg, tempPeg, destinationPeg ); // 最后从sourcepeg到destinationpeg移动磁盘
System.out.printf( "\n%d ——> %d", sourcePeg, destinationPeg ); // 移动(磁盘1)从临时peg到目的peg磁盘
solveTowers( disks - 1, tempPeg, destinationPeg, sourcePeg );
} public static void main( String[] args )
{
int startPeg = 1; // 值1表示startpeg输出
int endPeg = 3; // 值3表示endpeg输出
int tempPeg = 2; // 值2表示temppeg输出
int totalDisks = 3; //有几个托盘 //移动所有磁盘。
solveTowers( totalDisks, startPeg, endPeg, tempPeg );
}
}
其结果截图:

课后作业3:使用递归方式判断某个字串是否是回文( palindrome )
package boke;
import java.util.Scanner;
public class HuiWeiShu {
    public static void main(String[] args) {
        String S = " ";
        System.out.println("(此程序用于判断某个字符串s是否是回文)");
        System.out.println("请输入字符串S:");
        Scanner scan = new Scanner(System.in);
        S = scan.next();
        //输出结果
        System.out.println(ishui(S));
    }
    public static boolean ishui(String S){
        int L = S.length();//字符串的长度
        if(L<=1){
            return true;}//字符串是回文
        else if(S.charAt(0)!=S.charAt(L-1)){
                return false;
    }
    return ishui(S.substring(1,L-1));
}}
其运行结果:



经运行,其结果正确。
JAVA方法03之动手动脑问题解决的更多相关文章
- java异常处理动手动脑问题解决和课后总结
		
动手动脑 一.问题:请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. 1.源代码 import javax.swing.*; cl ...
 - java课堂第一次随机测试和课件课后动手动脑问题解决(2019-9-16 )
		
一.课堂测试 1.课堂测试:花二十分钟写一个能自动生成30道小学四则运算题目的 “软件” 要求 (1)减法结果不能为负数 (2)乘法结果不得超过一百,除法结果必须为整数 (3)题目避免重复: (4)可 ...
 - JAVA06数组之动手动脑问题解决
		
一.随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中. 1.设计思路:首先生成10个随机数,然后存放至长度至少是10的数组中,然后计算10个随机 ...
 - Java类和对象动手动脑
		
动手动脑1 以下代码为何无法通过编译?哪儿出错了?
 - JAVA语法基础作业——动手动脑以及课后实验性问题 (八)
		
一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...
 - JAV07接口与继承之动手动脑问题解决
		
动手动脑:请自行编写代码测试以下特性:在子类中,若要调用父类中被覆盖的方法,可以使用super关键字. 1.源代码: package Work; class A{ public A(){ System ...
 - Java文件与类动手动脑
		
动手动脑1: 使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件. package classJava; import java.io.IOExcepti ...
 - Java课程作业之动手动脑(四)
		
1.继承条件下的构造方法调用 class Grandparent { public Grandparent() { System.out.println("GrandParent Creat ...
 - Java第一节课动手动脑
		
在第一节课的动手动脑中,主要解决四则运算问题. 首先第一个是出30道四则运算题目,在100以内.这个问题需要控制随机数生成的范围和结果的范围在100以内就可以. 第一次改进是3点:一为避免重复,二为定 ...
 
随机推荐
- dr.wondr博士随笔之三星某智能机的SGHXXXX 的取证恢复一例
			
大家好!欢迎今天再次来到我dr.wonde的博客, 今天我给大家带来一款三星镜面古董机SGH-E848的取证展示! 三星SGH-E848是一款非常漂亮的镜面手机,2008年出厂.. 上面黄色是97号数 ...
 - Weblogic的JDBC详解
			
WebLogic Server 中的JDBC概述 在 WebLogic Server 中,您可以配置数据库连接,方法是先配置 JDBC 数据源和多数据源,然后将这些 JDBC 资源指定到或部署到 W ...
 - MySQL主从同步配置(Ubuntu)
			
一.在两台Linux机器上安装MySQL 二.Master主服务器配置(192.168.1.3) 1.编辑my.cnf(命令查找文件位置:find / -name my.cnf) vi /etc/my ...
 - jquery阻止冒泡事件行为发生
			
<div onclick="a()"> <p onclick="b()"></p> </div> div和p元素 ...
 - Java连接MySQL数据库——含步骤和代码
			
工具:eclipse MySQL5.6 MySQL连接驱动:mysql-connector-java-5.1.27.jar 加载驱动: 1. 在工程目录中创建lib文件夹,将下载好的JDBC放到该文件 ...
 - Python,Jupyter Notebook,IPython快速安装教程
			
0.安装环境 Windows10,Python3.5.1,IPython,jupyter notebook,and other functionality 官方安装文档Linux版3.x 官方安装文档 ...
 - ( [原创] 4s摄像头出现的问题及解决办法集锦。
			
[原创] 4s摄像头出现的问题及解决办法集锦. [复制链接] HPagani 34主题 126帖子 13人气 级别: 青苹果 帖子 126 经验 160 精华 人气 13 粉丝1 发消息 ...
 - Command调用存储过程小实例
			
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...
 - jQuery实践——选择器篇
			
一.基本 #id: html:<div id="demo1">demo1</div> jQuery:$("#demo1").css( ...
 - 如何用photoshop把图片白色背景变成透明?
			
1.当提示配置文件丢失时,选择“指定RGB模式”. 2.Ctrl+J是一个复合动作,复制+新建,会得到一个新图层. 3.选中新图层,点击鼠标左边工具条里面的魔棒工具,再用鼠标点击下图片的某处白色部分, ...