Java学习记录Day21
1、编写一个方法,求整数n的阶乘,例如5的阶乘是12345
思考:这个方法应该起什么名字,这个方法的形参是什么,方法的返回值类型是什么。
方法名为printFactorial,意思为输出阶乘,形参类型是整型,返回值类型也是整型。
import java.util.Scanner;
public class Work01 {
public static void main(String[] args) {
// 1、编写一个方法,求整数n的阶乘,例如5的阶乘是1*2*3*4*5
// 思考:这个方法应该起什么名字,这个方法的形参是什么,方法的返回值类型是什么。
}
public static int printFactorial(){
Scanner input=new Scanner(System.in);
System.out.print("请输入一个数字:");
int n=input.nextInt();
int fact=1;
for(int i=1;i<=n;i++){
fact*=i;
}
return fact;
}
}
2、编写一个方法,输出大于某个正整数n的最小的质数。
思考:这个方法应该起什么名字,这个方法的形参是什么,方法的返回值类型是什么。
方法名为minPrime,意思是最小的质数,形参类型为int类型,返回值也是int类型。
(1)、首先思考现实生活中如何判断质数,再思考如何求出某个正整数n的最小的质数.
从n+1开始判断,直到符合条件的最小质数出现,就输出这个最小质数。
(2)、是否需要循环嵌套?如果需要,内循环的循环体是什么内容?
外循环的循环体又是什么内容?
内循环为判断是否为质数,外循环从n+1开始判断是否为质数,不是质数则加1。
(3)、首先在main主方法中编写:输入一个数,然后输出这个数是不是质数。
再分别写出n+1到无穷大的循环语句。
Scanner input=new Scanner(System.in);
System.out.print("请输入一个正整数:");
int i=input.nextInt();
for(int j=2;j<a;j++){
if(a%j==0){
// System.out.println(a+"不是质数");
break;
}
}
判断是否为质数,除数只能从2开始自加。
int n=1;
int a=n+1;
for(a;a>1;a++){
}
(4)、先在main方法中完成方法体部分的设计。
public static void main(String[] args) {
// 2、编写一个方法,输出大于某个正整数n的最小的质数。
//思考:这个方法应该起什么名字,这个方法的形参是什么,方法的返回值类型是什么。
boolean number=true;
while(number){
Scanner input=new Scanner(System.in);
System.out.print("请输入一个正整数:");
int i=input.nextInt();
int a=i+1;
if(a>=4){
boolean num=false;
for(;i>0;a++){
for(int j=2;j<a;j++){
if(a%j==0){
// System.out.println(a+"不是质数");
break;
}else if(j==(a-1)){
if(i%j!=0){
System.out.println("比"+i+"大的最小质数是"+a);
num=true;
}
}
}
if(num==true){
break;
}
}
}else if(i==1){
System.out.println("比"+i+"大的最小质数是2");
}else if(i==2){
System.out.println("比"+i+"大的最小质数是3");
}else{
System.out.println("请输入一个正确的正整数");
}
}
}
(5)、修改方法名为public static int minPrime() {},最终结构为:
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.print("请输入一个正整数:");
int i=input.nextInt();
Work02Test.minPrime(i);
}
public static int minPrime(int i) {
int a=i+1;
if(a>=4){
boolean num=false;
for(;i>0;a++){
for(int j=2;j<a;j++){
if(a%j==0){
// System.out.println(a+"不是质数");
break;
}else if(j==(a-1)){
if(i%j!=0){
System.out.println("比"+i+"大的最小质数是"+a);
num=true;
}
}
}
if(num==true){
break;
}
}
}else if(i==1){
System.out.println("比"+i+"大的最小质数是2");
}else if(i==2){
System.out.println("比"+i+"大的最小质数是3");
}else{
System.out.println("请输入一个正确的正整数");
}
return a;
}
3、画出以下程序运行过程的内存图
public class Test{
public static void main(String[] args){
int a = 100;
int b = 200;
int retValue = m1(a, b);
System.out.println(retValue);
}
public static int m1(int x, int y){
int k = x * 10;
int m = y * 10;
int result = m2(k, m);
return result;
}
public static int m2(int c, int d){
int e = c / 2;
int f = d / 2;
int i = e + f;
return i;
}
}