4.1(求一个整数各位数字之和)编写一个方法,计算一个整数各位数字之和。使用下面的方法头:
pub1ic static int SumDigits (long n)
例如:sumD1gits(234)返回9(2+3+4)。
提示:使用求余操作符%提取数字,用除号/去掉提取出来的数字。例如:使用234%10(=4)抽取4。然后使用234/10(=23)从234中去掉4。使用一个循环来反复提取和去掉每位数字,直到所有的位敏都提取完为止。
编写程序提示用户输入一个整数,然后显示这个整数所有数字的和。
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.调用sumDigits()函数将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;
}
}
}
}
4.2(回文整数)使用下面的方法头编写两个方法:
//Return the reversal of an integer,1.e.,reverse(456) returns 654
public static int reverse(int number)
//Return true if number is a pa1indrome
public static boolean isPalindrome (int number)
使用reverse方法实现isPal1indrome。如果一个数字的反向倒置数和它的顺向数一样,这
个数就称作回文数。编写一个测试程序,提示用户输人一个整数值,然后报告这个整数是否是回
文数。
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)){ //调用isPalindrome()函数返回布尔型值进行判断
System.out.println("是回文");
}else{
System.out.println("不是回文");
}
}
public static boolean isPalindrome(int num){
//1.先计算该数字的反序
//2.对比反序的数字和数字本身
return reverse(num)==num; //调用reverse()函数计算数字反序
}
//计算数字反序的函数
public static int reverse(int num){
int sum=0;
while(true){
sum=sum*10+num%10;
num/=10;
if(num==0){
return sum;
}
}
}
}
4.3(显示图案)编写方法显示如下图案:
public static void displayPattern (in n)
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());//直接将输入的数字传入displayPattern()函数调用
}
public static void displayPattern(int line){
//两层for循环分别打印出空格和数字
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();
}
}
}
4.4检测密码
import java.util.Scanner;
class Demo04_04{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("请输入一个密码:");
String key = input.nextLine();//输入一个密码
isValidPassword(key); //调用该函数判断是否是符合标准
}
public static void isValidPassword(String key){
if(isEightChar(key)&&isOnlyLetterAndNum(key)&&isLeastTwoNum(key)){//同时符合这三个条件,则输出正规
System.out.print("Valid Password");
}
else{
System.out.print("Invalid Password");
}
}
public static boolean isEightChar(String key){
if(key.length()<8){//判断密码长度是否小于8位
return false;
}
else{
return true;
}
}
public static boolean isOnlyLetterAndNum(String key){
for(int i=0;i<=key.length()-1;i++){//判断密码是否仅仅由数字字母组成
if(!Character.isLetter(key.charAt(i))&& !Character.isDigit(key.charAt(i))){
return false;
}
}
return true;
}
public static boolean isLeastTwoNum(String key){
int count=0;
for(int i=0;i<=key.length()-1;i++){
if(Character.isDigit(key.charAt(i))){
count++;
}
}
if(count>=2)//判断数字的个数是都大于等于2个
return true;
else
return false;
}
}
4.5
(数学:平方根的近似求法)有几种实现Math类中sqrt方法的技术。其中一个称为巴比伦法。
它通过使用下面公式的反复计算近似地得到:
nextGuess=(lastGuess+n/lastGuess)/2
当nextCuess和1astGuess儿乎相同时,nextCuess就是平方根的近似值。最初的猜测值可以是任意一个正值(例如1。这个值就是1astGuess的初始值。如果nextGuess和1astGuess的差小于一个很小的数,比如0.0001,就可以认为nextGuess是n的平方根的近
似值;否则,nextCGuess就成为lastGuess,近似过程继续执行。实现下面的方法,返回n的平方根。
public static double sqrt(long n)
import java.util.*;
class Demo04_05{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
long n = input.nextLong();
sqrt(n);//将输入的n值传入sqrt()函数并调用;
}
public static double sqrt(long n){
double lastGuess=1,nextGuess=0,temp;//初始化lastGuesss,nextGuess,声明temp
while(n>=0){
nextGuess = (lastGuess+ n / lastGuess) / 2;
if((float) nextGuess == (float) lastGuess){//当两者之间的误差很小时跳出循环
System.out.print("n的平方根为:"+nextGuess);
break;
}else
//以下三行代码用于交换值。
temp = nextGuess;
nextGuess = lastGuess;
lastGuess = temp;
}
return nextGuess;
}
}
4.6
回文素数
class Demo04_06{
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++;
}
}
//判断是否是回文素数,是返回true,不是返回false
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;
}
}
4.7反素数
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++;
}
}
//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;
}
}
}
}
4.8指定字符出现的次数
import java.util.Scanner;
class Demo04_08{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入一个字符串 以及该字符串的一个字符:");
String str = input.nextLine();//输入一个字符串
//以下两句代码是输入一个字符的格式
String s = input.next();
char ch = s.charAt(0);
int result = count(str,ch);//接受count返回字符在字符串中出现的次数
System.out.print(ch+"出现了"+ result+"次");
}
public static int count(String str,char a){
int coun = 0;
for (int i=0;i<=str.length()-1;i++){
if(str.charAt(i) == a )//遍历字符串,判断是否和传入的字符一致
coun++;
}
return coun;
}
}
4.11最长共同前缀
import java.util.Scanner;
class Demo04_11{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
//输入两个字符串
System.out.print("请输入第一个字符串:");
String s1 = input.nextLine();
System.out.print("请输入第二个字符串:");
String s2 = input.nextLine();
for(int i=0;i