JavaSE编程题04

 

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 Home04_02 {
	static int num ;
	
	public static void reverse(int num){

		int k = 0,r,l = num;	
		while (num!=0)//将数字反过来{

				r = num%10;
				k = k*10+r;
				num/=10;
			}
		if(huiwen(k))//和原数字进行比较 判断是否为回文数{

			System.out.println(l+"是回文数");
		}
		else {

			System.out.println(l+"不是回文数");
		}
	}
	public static boolean huiwen (int a){

		return num==a?true:false;
	}
 
	public static void main(String[] args) {
		Scanner in = new Scanner (System.in);
		num = in.nextInt();
		reverse(num);//调用函数
		
 
	}
 
}

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.Scanner;
class Home04_04 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        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

import java.util.Scanner;
class Home04_05 {
	public static double sqrt(double n){
		double last = 1;
		double next = (last +n/last)/2;         //套入公式
		for (;Math.abs(next-last)>1e-6;){      //两个差特别小时候结束循环
			last = next;//这里需要转换
			next = (last +n/last)/2;
		}
		return next;
		
	}
	public static void main(String[] args) {
		Scanner in = new Scanner (System.in);
		double n = in.nextDouble();
		System.out.print(sqrt(n));         //输出函数返回的值
	}
 
}

4.6

/*
先判断是否为回文数,在写一个函数判断是否为素数。然后判断如果这个数字即是回文数也是素数则输出这个数字。用一个计数器count来计算输出了几个数字,然后到第十个的时候换行,到第一百个结束就好了
*/
class Home04_06{
	public static boolean reverse(int num){  //计算这个数字的倒过来的数字
		int k = 0,r,l = num;	
		while (num!=0){
				r = num%10;
				k = k*10+r;
				num/=10;
			}
		return huiwen(k,l)?true:false;
	}
	public static boolean huiwen (int a,int l){     //判断是否为回文数
		return l==a?true:false;
	}
	public static boolean su(int n){      //判断是否为素数
		boolean k = true;
		for (int i = 2;i<=n/2;i++){
			if (n%i==0){
				k = false;
				break;
				
			}
		}
		return k == true?true:false; 
	}
	public static void main(String []args){
		int count = 0;
		for (int i =2;count<100;i++){
			if (reverse(i)&&su(i)){
				count ++;//计数器
				if (count%10==0){
					System.out.printf("%-7d\n",i);//一个数字七个单位
				}
				else {
					System.out.printf("%-7d",i);
				}
			}
		}
	}
}

4.7

/*
先判断这个数是不是回文数,如果不是,就判断这个数是不是素数。如果是素数,就用一个函数把这个数字倒过来,再判断倒过来的数字
是不是素数,如果是就输出
*/
class Home04_07{
	public static boolean reverse(int num){   //判断他的数字到过来
		int k = 0,r,l = num;	
		while (num!=0){
				r = num%10;
				k = k*10+r;
				num/=10;
			}
		return huiwen(k,l)?true:false;
	}
	public static boolean huiwen (int a,int l){       //判断是否为回文数
		return l==a?true:false;
	}
	public static boolean su(int n){      //判断是否为素数
		boolean k = true;
		for (int i = 2;i<=n/2;i++){
			if (n%i==0){
				k = false;
				break;
				
			}
		}
		return k == true?true:false; 
	}
	public static int fan(int n){
		int k = 0,r;
		while (n!=0){
			r = n%10;
			k = k*10+r;
			n/=10;
		}
		return k;
	}
	public static void main(String []args){
		int count = 0;
		for (int i =2;count<100;i++){
			if (!reverse(i)&&su(i)){
				if (su(fan(i))){
					count ++;
					if (count %10==0){
						System.out.printf("%-7d\n",i);//一个数字占七个单位
					}
					else 
						System.out.printf("%-7d",i);
				}
			}
		}
	}
}

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);
	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);
		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);
		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);
	}
 
}
发布了39 篇原创文章 · 获赞 0 · 访问量 1448

猜你喜欢

转载自blog.csdn.net/qq_43199083/article/details/104259217