Java03动手动脑
1.当JAVA里定义的函数中去掉static后,怎么办?
static代表静态,由于main函数是静态的,如果自己定义的函数方法加了static则在类加载时就一起加载了、但如果不写static,就必须通过初始化一个对象(即new)后,通过对象来调用,否则报错,如
代码:
class A{
public static void main(String[]args){
A a = new A();
a.printHello();
} void printHello(){
System.out.println("Hello");
}
}
2.纯随机数发生法:
编写方法声称指定数目的随机数并且当显示(2的31次方-1)之后才允许重复
代码:
package randomfs;
import java.util.Scanner;
import java.util.Random;
public class Randomfs {
//wow原来包和类名可以不一样哟
public static void main(String[] args){
System.out.println("输入产生随机数个数:");
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();int o=0;
for(int i=0;i<a;i++)
{
System.out.println(bcfRan(i)+" ");
o++;
}
System.out.println("得到的个数为"+o);
}
//认为这里的数据类型转换不当
public static int bcfRan(int a){
double c=Math.pow(2,31)-1;
double x=(16870*a)%c;
int y = (int)x;
return y;
}
}
运行结果:
2.1 2.2
3.动手动脑观察下列的特殊之处:
代码:
package Try;
public class Try
{
public static void main(String[] args)
{
System.out.println(" The square of 7 is"+square());
System.out.println(" The square of 7.5 is"+square(7.5));
} public static int square(int x){
return x*x;
} public static double square(double x){
return x*x;
}
}
不同之处:
相同的方法名但是参数类型不一样。
运行结果:
package n;//包用小写,类用大写
import java.util.*;//不知道这俩个有啥区别
import java.util.Scanner;
import java.math.BigInteger;
public class N {
public static void main(String[] args){ System.out.println("输入组合数n,m以便求其阶乘n!/((n-m)!*m!):");
Scanner sc1=new Scanner(System.in);
int a=sc1.nextInt();
Scanner sc2=new Scanner(System.in);
int b=sc2.nextInt();
if(a<b)
{int c=a;a=b;b=c;}
System.out.println(a+"/"+"("+"("+a+"-"+b+")"+"!"+"*"+b+"!"+")"+"="+calculateN1(a).divide(calculateN1(b)).divide(calculateN1(a-b))); }
//计算大数阶乘
public static BigInteger calculateN1(int n) {
if(n== || n==)
{
return BigInteger.valueOf();
}
return BigInteger.valueOf(n).multiply(calculateN1((n-)));
} public static BigInteger calculateN2(int n) {
if(n== || n==)
{
return BigInteger.valueOf(); //怀疑这里有问题
}
return BigInteger.valueOf(n).multiply(calculateN1((n-)));
} }
运行结果:
使用一般的方法用杨辉三角形计算
代码:
package yhsjZH;
import java.util.Scanner;
public class YhsjZH {
//没有使用到会显示叹号
public static void main(String[] args){
System.out.println("输入杨辉三角的高度n(整数)");
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
//引用算法
yhsjZH(a);
} public static void yhsjZH(int n){
int b[][];
b=new int[n][n];//二维数组不是单纯的int b[n][n];
//设置第一列全为1
for(int i=0;i<n;i++){
b[i][0]=1;
}
//中间元素
for(int i=1;i<n;i++){
for(int j=1;j<=i;j++){
b[i][j]=b[i-1][j-1]+b[i-1][j];
}
}
//输出
for(int i=0;i<n;i++){
for(int j=0;j<=i;j++){
System.out.print(b[i][j]+" ");
}
System.out.println(" ");//换行措施output+=/n
}
}
}
运行结果:
课后作业:使用递推的方法用杨辉三角形计算:
//陶雨洁 信1505-1 20153152
package yhsj;
import java.util.Scanner;
public class Yhsj {
public static void main(String[] args){
System.out.println("输入正整数a,b以便求杨辉三角C(a,b),且a为下标:");
Scanner sc1=new Scanner(System.in);
int a=sc1.nextInt();
Scanner sc2=new Scanner(System.in);
int b=sc2.nextInt();
if(b>a)
{
int c=a;
a=b;
b=c;
} System.out.println(yhsjDG(a+1,b)-yhsjDG(a,b-1)); }
//阶乘计算
public static long JC(int n) {
if(n==1 || n==0){
return 1;
}
return n*JC(n-1);
} public static long yhsjDG(int i,int j) {
long A= JC(i)/JC(j)/JC(i-j);
return A;
}
}
运算结果:
使用递归的方法,用组合数递推公式计算:
代码:
//陶雨洁 信1505-1 20153152
//实验要求:输入一个任意正整数 n计算累加和,并对正数进行判断
package digui;
import java.math.BigInteger;
import java.util.Scanner;
import java.util.*;
public class digui {
public static void main(String[] args){
System.out.println("输入正整数n以便求其累加和:");
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
System.out.println(a+"累加和为:"+andsum(a)); }
//写一个自己的函数
public static int andsum(int a)
{
if(a==0) return 0;
else if(a==1) return 1;
return a+andsum(a-1);
//这里犯的错误是return放在了if(a!=0&&a!=1)导致andsum没有返回值,第二个错误是andsum()括号中a--之前写成a,然后换行a--
}
}
运行结果:
课后作业:递归编程解决汉诺塔问题(用JAVA实现)
代码:
package hnt; import java.util.Scanner; public class HNT { public static void main(String[] args) {
int nDisks = 3;
moveDish(nDisks, 'A', 'B', 'C');
} public static void moveDish(int level, char from, char inter, char to) {
if (level == 1) {
System.out.println(from + "上移动" + level + " ----->" + to);
} else {
moveDish(level - 1, from, to, inter);
System.out.println(from + "上移动" + level + " ----->" + to);
moveDish(level - 1, inter, from, to);
}
}
}
运行结果:
课后作业:使用递归方式判断某个字串是否是回文( palindrome )
思考:想用两个char数组正序和逆序比较或者递归函数中m++和i--,但是没写出来
代码:
package huiwenshu;
import java.lang.*;
import java.util.Scanner; public class Huiwenshu {
public static void main(String[] args){
//输入字符串string
System.out.println("输入字符串:");
Scanner sc1=new Scanner(System.in);
String x=sc1. nextLine();
System.out.println(hwsPD(x)); } public static boolean hwsPD(String s){
int i=s.length();
char[] ch1=s.toCharArray();//转换为字符串
if(i<1) return false;//<1
else if(i==1) return true;//=1
/*
char[] ch1=s.toCharArray();//正序
//逆序转换为字符串
for(int j=s.length();j>0;j--){ //int m=x.length();利用string自带求字符串长度的方法
char[] ch2=s.toCharArray();
}
for(int m=0;m<s.length();m++){
if(ch1[m]!=ch2[m]) return false;
}
*/
else if(s.charAt(0)!=s.charAt(i-1)){
return false;} return hwsPD(s.substring(0,i-1));//这个地方想s.substring(m++,i--)不行
}
}
运行结果:
有点气,肿么办!
悔过:又忘了写注释!
Java03动手动脑的更多相关文章
- JAVA语法基础作业——动手动脑以及课后实验性问题 (八)
一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识. 1)源代码 import javax.swing.*; class AboutException ...
- 05-String动手动脑问题及课后实验性问题总结
一.请运行以下实例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? (1)在Java中,内容相同的字符常量("Hello")只保存一 ...
- 03-方法ppt动手动脑问题及课后实验性问题总结
一.如何不使用static来进行调用函数? 1.自己定义的不需要都是static,但是要在主函数中调用就需要static了,因为main是静态 的,在类加载时就加载了.如果想用又不加可以吧自己写的方法 ...
- JAVA09异常处理之动手动脑问题
动手动脑1:为什么不管是否有异常发生,finally语句块中的语句始终保证被执行? 我们在写代码时,如果finally块中的代码过多会导致字节码条数"膨胀",因为finally中的 ...
- JAV07接口与继承之动手动脑问题解决
动手动脑:请自行编写代码测试以下特性:在子类中,若要调用父类中被覆盖的方法,可以使用super关键字. 1.源代码: package Work; class A{ public A(){ System ...
- JAVA06数组之动手动脑问题解决
一.随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中. 1.设计思路:首先生成10个随机数,然后存放至长度至少是10的数组中,然后计算10个随机 ...
- JAVA方法03之动手动脑问题解决
动手动脑1.当JAVA里定义的函数中去掉static后,怎么办?(如下程序,将square()函数的static去掉) public class SquareIntTest { public stat ...
- java动手动脑和课后实验型问题String类型
1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请 ...
- java动手动脑和课后实验型问题第四讲
1.完全"手写代码实现"随机数生成 动手动脑: 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. Modulus=231-1=int.MaxValue Mult ...
随机推荐
- 随机生成游戏用户昵称(nodejs版本)(含机器人头像,金币等)
1 前言 有时需要生成随机的用户(或机器人)昵称,头像,金币等,但又不想太生硬,可以现在网上爬一些常见昵称到文本中,然后读取出来,随机使用即可. 2 代码 var nickNameArr = []; ...
- python-函数入门(一)
1.什么是函数: 可重复使用的,用来实现单一,或相关联功能的代码段. 函数分为内置函数和自定义函数,这里先讲自定义函数 2.如何定义函数: #语法 def 函数名(参数1,参数2,参数3,...): ...
- Confluence 6 用户目录图例 - 可读写连接 LDAP
上面的图:Confluence 连接到一个 LDAP 目录. https://www.cwiki.us/display/CONFLUENCEWIKI/Diagrams+of+Possible+Conf ...
- Java的家庭记账本程序(B)
日期:2019.2.3 博客期:029 星期日 看看今天想先完成jsp的连接操作,所以首先意识到自己的程序中,管理员可以对成员进行冻结.解封操作,所以先回去补了一下数据库的内容!成员的内容里多了一项i ...
- Java的动手动脑(四)
日期:2018.10.18 星期四 博客期:019 Part1:回答为啥会报错 答案:当然会报错啦!因为平常的编程过程中,系统会对我们写的类自动生成一个默认无参形式的构造方法,类似于C++中的体制!这 ...
- 【mongo】可以用localhost启动,无法用ip启动问题的解决
问题: mongo安装在a.b.c.d机器上,启动mongo服务后, mongo localhost:27017可以进入数据库, mongo 127.0.0.1:27017也可以进入数据库 mongo ...
- Python实操二
实操一: 1.用map来处理字符串列表啊,把列表中所有人都变成sb,比方alex_sb name=['alex','wupeiqi','yuanhao'] name=['alex','wupeiqi' ...
- PHP Warning: mysqli_connect(): The server requested authentication method unknown to the client [caching_sha2_password] in /usr/local/php/CreateDB.php on line 5
原因:php还不支持mysql8.0最新的密码加密方式 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ' ...
- Winhex数据恢复学习笔记(三)
上次对文件系统进行简单的分析,这次就文件的镜像功能做一介绍 1.首先镜像的概念:镜像就是数据的副本,是原来数据在相同位置上以相同的排列模式生成的拷贝,所以镜像可以用来还原原始数据,代替原始数据工作,镜 ...
- cf1107d 映射关系
#include<bits/stdc++.h> using namespace std; ][]; int judge(int i){ ;j<=n;j++) ][j]); ; } i ...