课堂动脑

第一题:

请看以下代码,你发现了有什么特殊之处吗?

// 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(" The 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;

         }

}

这就是重名方法地重载。首先参数类型不同,参数个数不同,再就是或者是参数类型的顺序不同。同时,

方法地返回值在最后出结果地时候才会进行判断是否符合条件固不能用返回值作为方法重载判断的标准。

第二题:

题目:手写算法生成随机数。

代码:

import java.math.*;

public class Suijishu {

 

  public static void main(String[] args) {

    // TODO Auto-generated method stub

      int x=57,a=95,c=17, m=13;int k=0;

    for(int i=0;i<1000;i++){

      x=(a*x+c)%m;

      a+=5;x+=2;c++;m+=4;

      k++;

      System.out.print(x+" ");

      if(k%5==0)

         System.out.println();

      }

  }

}

第三题:java中的输出方法以及连接

+号可以连接字符串;

 

System.out.println(i);//这样是直接输出变量
System.out.println("11111");//这是直接输出
System.out.println("i = "  + i);//这是拼接的,如果i=1输出“i=1”,如果i=“string”输出“i=string”。
System.out.println(i+i+“222a”+j+j);
当多个变量或变量和字符串相加时,变量和字符串一般就是互相拼接。
但当某些变量为int类型时,如上面的int i=1 j=1;输出“2222a11”。
可以看出int类型在前相加时是先进行加法运算的,后面则是默认转换成String类型。

Java中输出语句是重载过地可以识别多种不同的链接方式

第四题:

递归方式判断字符串是否是回文数

public static void main(String[] args) {
String text = "abccb";
System.out.println(isHuiwen(text));
}
public static boolean isHuiwen(String text){
int length = text.length();
for(int i=0;i<length/2;i++){
if(text.charAt(i)!=text.charAt(length-i-1)){
return false;
}
}
return true;
}
第五题:

需求:用Java编写一个汉诺塔的过程
* 汉若塔问题,就是把A柱子上面从大到小一次叠放的盘子借助B柱移到C柱上去,规则是一次只能移动一个盘子,大盘子不能放到小盘子之上
*
* 思想:采用递归的方法来接
* 1. 先将A上面的n-1个盘子,移到B柱上
* 2. 然后把A上最大的一个盘子放到C上去
* 3. 然后把B上面的n-1个盘子移到A上去
*
* 步骤:
* 汉若塔用递归思考首先考虑一种临界状态,把n-1个上面的盘从A—B, 就是把n从A移动到C,最后把n-1个盘从B---C,
* (注意在考虑把n-1个盘从B---C的时候就出现递归调用,如果把A,B盘交换就又重复上面的流程了,最后到n = 1的时候就返回)
*
* 伪代码:
* public void run(int n, char a, char b, char c)
{
if(n==1)
{
move(n,a,c) //等于1的时候把盘从A移动到C
}else
{
run(n-1,a,b,c);//递归调用把a上面的n-1个盘移动到B上,怎么表示移动?把柱子交换不就是移动了。
move(n,a,c);
run(n-1,b,a,c);//意图是把n-1个盘从B移动到A上。
}

}
*
*/

public class HanoiTower {

public static void moveDish(int level, char from, char inter, char to)
{
if(level ==1)
{
System.out.println("从 "+from+"移动盘子1号到 "+to);
}else
{
moveDish(level-1,from,to,inter);
System.out.println("从 "+from+" 移动盘子 "+level+" 号到 "+to);
moveDish(level-1,inter,from,to);
}

}

public static void main(String[] args) {
// TODO Auto-generated method stub
int nDisks = 3;
moveDish(nDisks,'A','B','C');

}

}

原文地址:https://www.cnblogs.com/ever1961211/p/5965517.html