下面我们来看一下函数这些题;
↓↓↓↓↓↓↓
这道题就是把数字拆分了,然后求和;
import java.util.Scanner;
class Demo04_01{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个数字:");
long num=scanner.nextLong();
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;
}
}
}
}
我们来分析一下这道题:
1.提示用户输入一个数字
2.先计算该数字的反序
3.对比反序的数字和数字本身
4.输出
import java.util.Scanner;
class Demo04_02{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个数字:");
int num=scanner.nextInt();
//判断该数字是否是一个回文
if(isPalindrome(num)){ // pause1
System.out.println("是回文");
}else{
System.out.println("不是回文");
}
//return ;
}
public static boolean isPalindrome(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;
}
}
}
}
输入几个例子,看结果:
请输入一个数字:121
是回文
C:\Users\ASUS\Desktop\xxl.code>java Demo04_02
请输入一个数字:234
不是回文
提示用户输入一个数字;
根据公式计算
输出,
import java.util.Scanner;
class Demo04_05{
public static void main(String[] args){
System.out.print("请输入一个数字:");
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
System.out.println(sqrt(n));
}
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;
}
}
}
输入几个值去验证一下;
C:\Users\ASUS\Desktop\xxl.code>java Demo04_05
请输入一个数字:27
5.196152422706632
C:\Users\ASUS\Desktop\xxl.code>java Demo04_05
请输入一个数字:9
3.0
1.本身是素数
2.反转之后也是素数
3.不能是回文
用三个函数来实现:
素数() 反转() 回文功能()
下面是代码段:
class Demo04_07{
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++;
}
}
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;
}
}
}
}
看结果:
C:\Users\ASUS\Desktop\xxl.code>java Demo04_07
13 17 31 37 71 73 79 97 107 113
149 157 167 179 199 311 337 347 359 389
701 709 733 739 743 751 761 769 907 937
941 953 967 971 983 991 1009 1021 1031 1033
1061 1069 1091 1097 1103 1109 1151 1153 1181 1193
1201 1213 1217 1223 1229 1231 1237 1249 1259 1279
1283 1301 1321 1381 1399 1409 1429 1439 1453 1471
1487 1499 1511 1523 1559 1583 1597 1601 1619 1657
1669 1723 1733 1741 1753 1789 1811 1831 1847 1867
1879 1901 1913 1933 1949 1979 3011 3019 3023 3049
import java.util.*;
class Demo04_09{
public static void main(String[] args) throws Exception{
Scanner in = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String s = in.nextLine();
if(s==null || s.trim().length()==0){
System.out.println("你输入的字符串无意义!");
return;
}
for(int i=s.length()-1; i>=0; i--){
System.out.print(s.charAt(i));
}
}
}
输入几个值看结果:
请输入一个字符串:123
321
C:\Users\ASUS\Desktop\xxl.code>java Demo04_09
请输入一个字符串:
你输入的字符串无意义!
import java.util.Scanner;
class Demo04_10{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
String str = sc.next();
char[] arr = str.toCharArray();
int sum = 0;//统计多少个大写字母
String result = ""; //连接大写字母
for(int i = 0; i < arr.length; i++){
if((int)arr[i] >= 65 && (int)arr[i] <= 90){
sum = ++sum;
result += arr[i];
}
}
System.out.println("大写字母一共:" + sum+"---");
System.out.println("分别为:" + result);
}
}
}
输入值看结果:
Welcome to java
大写字母一共:1---
分别为:W
→─↓→汉诺塔问题:
最大的问题将X上的三个盘子放到Z上
3个 X->Z
前2个 X->Y
前1个 X->Z
第2个 X->Y
前1个 Z->Y
第3个 X->Z
前2个 Y->Z
前1个 Y->X
第2个 Y->Z
前1个 X->Z
64个 X->Z
前63个 X->Y
前62个 X->Z
第63个 X->Y
前62个 Z->Y
第64个 X->Z
前63个 Y->Z
前62个 Y->X
第63个 Y->Z
前62个 X->Z
class Hanno{
public static void main(String[] args){
//盘子的个数 出发 中间 目的
hanno(64,"X","Y","Z");
}
public static void hanno(int n,String begin,String mid,String end){
if(n==1){
System.out.println(begin+" -> "+end);
}else{
hanno(n-1,begin,end,mid);
System.out.println(begin+" -> "+end);
hanno(n-1,mid,begin,end);
}
}
}
当是三个盘子的时候,结果如下:
C:\Users\ASUS\Desktop\xxl.code>java Hanno
X -> Z
X -> Y
Z -> Y
X -> Z
Y -> X
Y -> Z
X -> Z