Java练习题总结(四)

4.1

/*
构造一个函数来进行。函数的功能是返回一个数字的所有位数相加。我们在函数中,写入一个循环,每次对传入的值进行取余,
然后加到sum变量中,然后函数除以10,当函数为0时退出循环,返回这个数值。
*/
import java.util.*;
class Home04_01 {
	public static int add(int n){
        int sum = 0;//计入每一位相加的和
		while (n!=0){
			sum += n%10;
			n/=10;
		}
		return sum;//返回数字
	}
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int num = in.nextInt();
		System.out.println(add(num));//调用函数
	}
}

4.2

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;
            }
        }
    }
}

4.3

/*
每一行先输出空格,输出的空格数就是n-行数,然后输出n到1的数字。
*/
import java.util.Scanner;
class Home04_03 {
	public static void go(int n ){
		for (int i = 1;i<=n;i++){
			for (int j = 1;j<=n-i;j++){    //输出图形
				System.out.print(" ");
			}
			for (int k = i;k>0;k--){
				System.out.print(k);
			}
			System.out.println();
		}
	}
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		go(n);//传入函数
	}
}

4.4

import java.util.*;
class Home04_04 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入一个密码: ");
        String password = input.next();
        password(password);
    }
    public static void password (String password) {
        int biaozhi = 1;
        if(password.length() >= 8){
            password = password.toUpperCase();
                for(int i = 0, count = 0; i < password.length(); i++) {
                    if((password.charAt(i) >= '0' && password.charAt(i) <='9'||(password.charAt(i) >= 'A' && password.charAt(i)< 'Z'))){
                        if(password.charAt(i) >= '0' && password.charAt(i) <='9') {
                            ++count;
                            if(count >= 2)
                                System.out.println("ValidPassword");
                            else
                                System.out.println("InValidPassword");
                        }
                        else
                            System.out.println("InvalidPassword");
                        System.exit(0    );
                   }
            }
        }else
            System.out.println("InValidPassword");
    }
}

4.5

lass Demo04_05{
    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;
        }
    }
}

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++;
        }
    }
    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 Home04_08{
	public static int count(String a, char b) {
		int count = 0;
		for (int i = 0;i<a.length();i++) {
			if (a.charAt(i)==b) {
				count ++;//计数器加一
			}
		}
		return count;
	}
	public static void main(String[] args) {
		Scanner in = new Scanner (System.in);
		System.out.print("输入一个字符串以及字符");
		String s = in.next();	//输入字符串
		char a = in.next().charAt(0);//输入字符
		int b = count(s,a);//调用函数
		System.out.print(b);
	}
}

4.9

/*
从字符串的最右边开始遍历字符串,一次输出即可
*/
import java.util.Scanner;
class Home04_09{
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.print("输入字符串");//提示输入
		String s = in.next();//读取字符串
		for (int i = s.length()-1;i>=0;i--) {
			System.out.print(s.charAt(i));//从右边开始输出。
		}
	}
}

4.10

/*
遍历一遍字符串,判断是否大于等于A小于等于Z,如果是计数器加一,最后输出
*/
import java.util.Scanner;
class Home04_10{
    public static void main(String[] args) {
        Scanner in = new Scanner (System.in);
        System.out.print("请输入字符串:");
	String s = in.next();//读取字符串
	int count = 0;
	for (int i = 0;i<s.length();i++) {
	    if (s.charAt(i)>='A'&&s.charAt(i)<='Z') {
		count ++;//判断是否为大写字母
	    }
	}
	System.out.print(count);
    }
}

4.11

/*

先找出来小的字符串,然后从小的的最左边开始判断,看每几个字符是否时大的的开头,如果不是,就退出循环,每次计数器加一,
如果计数器为0就是没有,否则输出任意一个字符串的前count个字符即可

*/
import java.util.Scanner;
class Home04_11{
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("请输入第一个字符串: ");
        System.out.print("请输入第二个字符串: ");
	String a = in.nextLine();
	String b = in.nextLine();//读取字符串
	String c = a.length()>b.length()?a:b;//一个等于大的
	String d = a.length()>b.length()?b:a;//一个等于小的
	int count = 0;//计数器
	for (int i = 0;i<d.length();i++){
	    if(c.startsWith(d.substring(0, i+1))){
		count ++;//是开头
	    }
            else{				
                break;
	    }
        }
        if (count==0){
	    System.out.print("no");//没有的
        }
        else{
	    for (int i = 0;i<count;i++){
	        System.out.print(a.charAt(i));
	    }
        }
    }
}

4.12

/*

读取字符串的每一位,知道其对应的阿斯克代码值,如果是字母,就减去55就是对应的十六进制的值,如果是数字,就减去48就是

对应的int的值。最后我们带入公式,定义一个sum,每次加读取的每一位化作数字乘以16的(字符串长度-位数)次方即可。最后输出。

*/
import java.util.Scanner;
class Home04_12{
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("请输入一个十六进制数:");
	String s = in.next();
	int sum = 0;//计算总数
	for (int i = 0;i<s.length();i++) {
	    int a = s.charAt(i)>=65?s.charAt(i)-55:s.charAt(i)-48;
	    //计算每一位对应的数字
	    sum+=a*Math.pow(16,s.length()-i-1);	//套入公式
	}
	System.out.print(sum);
    }
}
发布了65 篇原创文章 · 获赞 3 · 访问量 1774

猜你喜欢

转载自blog.csdn.net/weixin_44077638/article/details/104327311