Demo 01
解答:
数据: 用户输入整数 num 各位数和 sum
步骤:
- 提示用户输入整数 num
- 编写方法 对num 进行取余运算 整除运算
- 将各位数字相加求得 sum
- 输出结果
import java.util.Scanner;
class Demo04_01{
public static void main(String[] args){
//1.先输入一个数字
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个数字:");
long num=scanner.nextLong();
//2.调用函数将num拆分求和
int sum=sumDigits(num);
System.out.println(sum);
}
public static int sumDigits(long n){
int sum=0;
while(true){
sum+=n%10;
n/=10;
if(n==0){
return sum;
}
}
}
}
此题与往次求各个数位之和方法一样,只不过将方法封装进一个独立函数中进行运行
Demo 02
解答:
数据: 用户输入整数值 num
步骤:
- 提示用户输入整数
- 编写主函数构造大体框架
- 进行判断 true 是回文 false 不是回文
- 按题目要求将数据处理具体方法封装到函数中
import java.util.Scanner;
class Demo04_02{
public static void main(String[] args){
//1.提示用户输入一个数字
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个数字:");
int num=scanner.nextInt();
//2.判断该数字是否是一个回文
if(isPalindrome(num)){ // pause1
System.out.println("是回文");
}else{
System.out.println("不是回文");
}
//return ;
}
public static boolean isPalindrome(int num){
//1.先计算该数字的反序
//2.对比反序的数字和数字本身
//pasue 2
return reverse(num)==num;
}
public static int reverse(int num){
int sum=0;
while(true){
sum=sum*10+num%10;
num/=10;
if(num==0){
return sum;
}
}
}
}
Demo 03
解答:
数据: 用户输入行数 line
步骤:
- 提示用户输入行数
- 构造外部循环 行数
- 进而构造内部循环
- 打印输出结果
import java.util.Scanner;
class Demo04_03{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入行数:");
displayPattern(scanner.nextInt());
}
public static void displayPattern(int line){
for(int i=1;i<=line;i++){
for(int k=1;k<=line-i;k++){
if(line<10){
System.out.print(" ");
}else{
System.out.print(" ");
}
}
for(int j=i;j>=1;j--){
if(line<10){
System.out.printf("%-2d",j);
}else{
System.out.printf("%-3d",j);
}
}
System.out.println();
}
}
}
Demo 04
解答;
步骤:
- 直接按照题意进行函数编写
class Demo04_04{
public static void main(String[] args){
System.out.println(sqrt(9));
}
public static double sqrt(long n){
double lastGuess=1;
double nextGuess=(lastGuess+n/lastGuess)/2;
while(true){
if(Math.abs(nextGuess-lastGuess)<0.00001){
return nextGuess;
}
lastGuess=nextGuess;
nextGuess=(lastGuess+n/lastGuess)/2;
}
}
}
Demo 05
解答:
数据: 初始数据 num=2 计数 count=0
步骤:
- 编写主函数 构造大体框架
- 构造判断素数函数
- 构造判断回文函数
- 判断既是回文也是素数 true 是回文素数 false 不是回文素数
- 格式化输出回文素数
class Demo04_05{
public static void main(String[] args){
int count=0; //表示回文素数的个数
int num=2; //表示可能的回文素数的数字 从2开始~?
while(true){
//如果num是 回文素数
if(isHuiWenAndSuShu(num)){
count++;
System.out.print(num+" ");
if(count%10==0){
System.out.println();
}
}
if(count==100){
break;
}
num++;
}
}
public static boolean isHuiWenAndSuShu(int num){
return isHuiWen(num)&&isSuShu(num);
}
public static boolean isHuiWen(int num){
return reverse(num)==num;
}
public static int reverse(int num){
int sum=0;
while(true){
sum=sum*10+num%10;
num/=10;
if(num==0){
return sum;
}
}
}
public static boolean isSuShu(int num){
for(int i=2;i<=num/2;i++){
if(num%i==0){
return false;
}
}
return true;
}
}
Demo 06
解答:
数据: 初始数据 num=2 计数 count =0
步骤:
- 编写主函数 构造大体框架
- 构造判断数值素数函数
- 构造函数对素数进行反转
- 构造循环进行100次
- 格式化输出结果
class Demo04_06{
public static void main(String[] args){
int count=0;
int num=2;
while(true){
if(isFanZhuanSuShu(num)){
count++;
System.out.print(num+" ");
if(count%10==0){
System.out.println();
}
}
if(count==100){
return; //结束当前函数
}
num++;
}
}
//1.本身是素数
//2.反转之后也是素数
//3.不能是回文
//素数() 反转() 回文功能()
public static boolean isFanZhuanSuShu(int num){
return isSuShu(num)&&isSuShu(reverse(num))&&!isHuiWen(num);
}
//回文功能
public static boolean isHuiWen(int num){
return reverse(num)==num;
}
//素数功能
public static boolean isSuShu(int num){
for(int i=2;i<=num/2;i++){
if(num%i==0){
return false;
}
}
return true;
}
//反转功能
public static int reverse(int num){
int sum=0;
while(true){
sum=sum*10+num%10;
num/=10;
if(num==0){
return sum;
}
}
}
}
本章主要考察对函数的使用 我们应注重函数使用的格式 函数与函数之间的联系以及函数具体结构 各个结构的作用