java动手动脑课后思考题
public class SquareInt {
public static void main(String[] args) {
int result;
for (int x = ; x <= ; 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 = 1 + (int) ( Math.random() * 100 );
output += value + " ";
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 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;
}
}

这段代码自定义了两个方法,展示了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动手动脑课后思考题的更多相关文章
- Java动手动脑——多态和继承
Java动手动脑——继承和多态 实验一 预估输出答案:100 200 201 202 输出结果:100 200 201 202 输出答案分析:100 创建parent类的对象,调用对象的方 ...
- java动手动脑和课后实验型问题String类型
1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请 ...
- java动手动脑和课后实验型问题第四讲
1.完全"手写代码实现"随机数生成 动手动脑: 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. Modulus=231-1=int.MaxValue Mult ...
- java动手动脑和动手实验
动手动脑一: EnumTest.java: 程序代码: public class EnumTest { public static void main(String[] args) { Size s= ...
- java 动手动脑7
---恢复内容开始--- 一.动手动脑:多层的异常捕获-1 阅读以下代码(CatchWho.java),写出程序运行结果: ArrayIndexOutOfBoundsException/内层try-c ...
- Java动手动脑第四讲课堂作业
动手动脑1 完全“手写代码实现”随机数生成 纯随机数发生器
- java动手动脑和课后实验型问题
1.以下代码的输出结果是什么?为什么会有这个结果? int[] a = { 5, 7, 20 }; System.out.println("a数组中的元素:"); // 循环输出a ...
- JAVA动手动脑及课后作业
1.查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 运行结果 true true false 原因 1)在Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0, ...
- JAVA动手动脑多态
动手实验一:下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么? m=d; d=m; d=(Dog)m; d=c; c=(Cat)m; 先进行自我判断,得出结论后,运行TestCas ...
随机推荐
- spark install
https://chongyaorobin.wordpress.com/2015/07/01/step-by-step-of-installing-apache-spark-on-apache-had ...
- VC使用双缓冲避免绘图闪烁的正确使用方法【转】
使用内存DC绘图,然后实现双缓冲,避免绘图闪烁,这个小技术简单但很有效.但是仍然有很多人说使用了双缓冲,图片却仍然有闪烁,分析了几个这样的例子,发现 其实不是双缓冲的技术问题,而是使用者没有正确理解和 ...
- 原来ipad的浏览器也可以直接clip到evernote
今天才发现是有方法通过邮件方式保存ipad上浏览的内容到evernote,之前以为要反复切换app来做到. 只要在toread.cc登记evernote对应帐号的邮箱,就可以根据toread返回到ev ...
- [LeetCode][Python]Reverse Integer
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com'https://oj.leetcode.com/problems/reverse ...
- [LeetCode][Python]Longest Palindromic Substring
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com'https://oj.leetcode.com/problems/longest ...
- 应用java多线程实现server端与多client之间的通信
应用多线程来实现server与多线程之间的通信的基本步骤 1.server端创建ServerSocket,循环调用accept()等待client链接 2.client创建一个Socket并请求和se ...
- Swift 委托/代理设计模式
Swift 中的委托/代理模式(以下简称"代理模式")与object-c的代理模式基本一致. 代理模式的基本思想就是将我(类或者结构体等)需要来完成的工作交给(委托给)另一个有我所 ...
- [编程题] 最大的LeftMax与rightMax之差绝对值
[编程题] 最大的LeftMax与rightMax之差绝对值 给定一个长度为N的整型数组arr,可以划分成左右两个部分: 左部分arr[0..K],右部分arr[K+1..arr.length-1], ...
- SQL server 和Oracle 序列
1,SQL Server序列创建与使用 BEGIN IF EXISTS (SELECT * FROM sysobjects WHERE name = 'event_seq') DROP SEQUENC ...
- JS操作JSON的方法总结
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...