首页 > 代码库 > java动手动脑课后思考题
java动手动脑课后思考题
public class SquareInt { 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"); } } // 自定义求平方数的静态方法 public static int square(int y) { return y * y; }}
1、此代码中采用static调用自定义方法,如果不加static可以使用类名.成员名或者对象名.成员名调用。
2、编写一个方法,使用纯随机数发生器算法生成指定数目(比如1000个)的随机整数。
import javax.swing.JOptionPane;public class Testseed { public static void main( String args[] ) { int value; String output = ""; for ( int i = 1; i <= 100; i++ ) { value = http://www.mamicode.com/1 + (int) ( Math.random() * 100 );" "; if ( i % 10== 0 ) output += "\n"; } JOptionPane.showMessageDialog( null, output, "20 Random Numbers from 1 to 6", JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); }}
此程序输出100个随机数,但并未采用随机数发生器写,此程序存在问题。
3.请看以下代码,你发现了有什么特殊之处吗?
// MethodOverload.java// Using overloaded methodspublic 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; }}
这段代码自定义了两个方法,展示了java的方法重载,一个为int类型,一个为double类型,在输出时int 类型自动调用int类型的方法,double类型自动调用double类型的方法,同时,改动自定义方法的顺序并不影响结果,证明并不是先后顺序决定调用顺序,而是java自动识别参数类型然后找到对应的自定义方法进行计算。
4、使用计算机计算组合数:
(1)使用组合数公式利用n!来计算
import java.util.Scanner;public class Zuheshu1 { public static void main(String[]args){ System.out.println("请输入组合数的n和k:"); Scanner in1=new Scanner(System.in); int n=in1.nextInt(); Scanner in2=new Scanner(System.in); int k=in2.nextInt(); int result=jiechen(n)/(jiechen(k)*jiechen(n-k)); System.out.println("组合数结果为:"+result); in1.close(); in2.close(); } public static int jiechen(int n) { int jieguo=1; if(n<0) { System.out.println("输入非法!"); } else if(n==0||n==1) { jieguo=1; } else { jieguo=jiechen(n-1)*n; } return jieguo; }}
实验结果
(2)使用递推的方法用杨辉三角形计算
package Zuheshu2;import java.util.Scanner;public class Zuheshu2 { public static void main(String[]args){ System.out.println("请输入组合数的n和k:"); Scanner in1=new Scanner(System.in); int n=in1.nextInt(); Scanner in2=new Scanner(System.in); int k=in2.nextInt(); System.out.println("组合数结果为:"+jieguo(n,k)); in1.close(); in2.close(); } public static int jieguo(int n,int m) { if(m==0||n==m) return 1; int s=Math.min(m, n-m); int f=1,f1=0; for(int i=1;i<=s;i++) { f1=f*(n-i+1)/(i); f=f1; } return f1; } }
实验结果:(此算法借鉴百度)
(3)使用递归的方法用组合数递推公式计算
import java.util.Scanner;public class Zuheshu2 { public static void main(String[]args){ System.out.println("请输入组合数的n和k:"); Scanner in1=new Scanner(System.in); int n=in1.nextInt(); Scanner in2=new Scanner(System.in); int k=in2.nextInt(); System.out.println("组合数结果为:"+jieguo(n,k)); in1.close(); in2.close(); } public static int jieguo(int m,int n) { if(m<0||n<0||m<n) return 0; if(m==n) return 1; if(n==1) return m; return jieguo(m-1,n)+jieguo(m-1,n-1); }}
实验结果:
5.递归编程解决汉诺塔问题。用Java实现
public class TowersOfHanoi{ public static void solveTowers( int disks, int sourcePeg, int destinationPeg, int tempPeg ) { if ( disks == 1 ) { System.out.printf( "\n%d --> %d", sourcePeg, destinationPeg ); return; } solveTowers( disks - 1, sourcePeg, tempPeg, destinationPeg ); System.out.printf( "\n%d --> %d", sourcePeg, destinationPeg ); solveTowers( disks - 1, tempPeg, destinationPeg, sourcePeg ); } public static void main( String[] args ) { int startPeg = 1; int endPeg = 3; int tempPeg = 2; int totalDisks = 3; solveTowers( totalDisks, startPeg, endPeg, tempPeg ); } }
实验结果:
6.回文数
import java.util.*;public class Palindrome { public static void main(String[]args){ //从键盘上输入一个字符串str String str=""; System.out.println("请输入一个字符串:"); Scanner in=new Scanner(System.in); str=in.nextLine(); //根据字符串创建一个字符缓存类对象sb StringBuffer sb=new StringBuffer(str); //将字符缓存中的内容倒置 sb.reverse(); //计算出str与sb中对应位置字符相同的个数n int n=0; for(int i=0;i<str.length();i++){ if(str.charAt(i)==sb.charAt(i)) n++; } //如果所有字符都相等,即n的值等于str的长度,则str就是回文。 if(n==str.length()) System.out.println(str+"是回文!"); else System.out.println(str+"不是回文!"); } }
实验结果:
java动手动脑课后思考题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。