《疯狂Java》1、数字转化汉字;2、乘法表;3、等腰三角形;4、区别substring按字节截取字符串;5、身份证验证器

 

1、数字转化汉字

import java.util.Scanner;
public class Hello {
	//W,J,X分别为汉字数字与进制以及小数点后进制
	private static String[ ] W= {"零","壹","貳","叁","肆","伍","陆","柒","捌","玖","拾"};
	private static String[ ] J= {"拾","佰","仟","万"};
	private static String[ ] X= {"角","分"};
	//divide实现了将输入数字分为小数点前后两个字符串
	private String[ ] divide(double num){
		long Qian=(long)num;
		String cc=String.valueOf(num);
		String Hou=cc.split("\\.")[1];
		String[ ] a=new String[ ] {String.valueOf(Qian),Hou};
		return a;
	}
	private void complete(String digital0,String digital1) {
		//初始化语句
		String result="";
		//k为从后往前数作为位数的指针
		int k=-1;
		//从个位开始向前遍历数字
		for (int i=digital0.length()-1;i>=0;i--){
			//个位比较独特
			int j=digital0.length()-1;
			//字符串数字转化成数字
			int num=digital0.charAt(i)-48;
			if (k==7){   //当数字长度是8位以上
				result=W[num]+"亿"+result;
				k++;
				continue;
			}
			if (i!=j&&num==0&&digital0.charAt(i+1)==48) {  //去除重复零当输入的数字中第i位不是最高位,且i位为0,且第(i+1)位是0
				if(J[k%4]=="万") {//亿以下万要保留
					result=J[k%4]+result;
					k++;
					continue;
				}
				k++;
				continue;
			}
			if(i==j&&num==0) {   //当个位为零时
				k++;
				continue;
			}
		
			if(i!=j&&num!=0){  //当遍历中的i不是最高位,且第i位不为0时
			result=W[num]+J[k%4]+result;
			}
			else{
				result=W[num]+result;
			}
			k++;
		}
		result=result+"圆";
		for(int i=0;i<=digital1.length()-1;i++){
//			if(digital1.length()==1) {   //当数字为个位数字时
//				break;
//			}

			result+=W[digital1.charAt(i)-48]+X[i];
		}
		if(result.charAt(result.indexOf("亿")+1)=='万') {//亿以上亿万相靠去除万
			result=result.substring(0, result.indexOf("亿")+1)+result.substring(result.indexOf("亿")+2);
		}
		System.out.print(result);
	}
	public static void main(String[] args) {
		//新建对象
		Hello nr =new Hello();
		//键入数字
		Scanner scanner = new Scanner(System.in);  
		Double digital=scanner.nextDouble();
		//digital0为小数点前数字字符串
		String digital0=nr.divide(digital)[0];
		//digital1为小数点后数字字符串
		String digital1=nr.divide(digital)[1];
		//数字转换汉字
		nr.complete(digital0,digital1);
	}
}

2、乘法表

import java.util.Scanner;
public class Hello {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		System.out.println("please input number");
		int nb=scanner.nextInt();
		for(int i = 1;i <= nb;i++) {
			for(int j = 1;j <= i;j++) {
				System.out.print(i+"x"+j+"="+i*j+" ");
			}
			System.out.print("\n");
		}
	}
}

3、等腰三角形

import java.util.Scanner;
public class Hello {
 public static void main(String[] args) {
  System.out.println("please input line number");
  Scanner scanner=new Scanner(System.in);
  int nb=scanner.nextInt();
  for(int i = 0;i <= nb;i++) {
   for(int j = nb-i;j >0;j--) {
    System.out.print(" ");
   }
   for(int j = 2*i+1;j>0;j--) {
    System.out.print("*");
   }
   System.out.print("\n");
  }
 }
}

4、区别substring按字节截取字符串

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;
public class Hello {
	//字符串按字节截取
	void subb(String input,int begin,int end) throws UnsupportedEncodingException {
		//将字符串按字节解码
		byte[] c = input.getBytes("Unicode");
		//wei进行字节的计数
		int wei = 0;
		//q作为开始的字符指针,目的找到begin的字符与结束
		int q = 0;
		//s作为开始的保留存储
		int s=0;
		for(int i = 2 ;i < c.length;i+=2) {
			if(begin>=wei) {
				s=q;
			}
			if(c[i]!=0) {
				wei++;
			}
			wei++;
			if(end<=wei) {
				for(int p = s;p<q;p++) {
					System.out.print(input.charAt(p));
				}
				break;
			}
			q++;
			}
		}
	public static void main(String[] args) throws IOException {
		Hello h = new Hello();
		//输入字符串
		BufferedReader scan= new BufferedReader(new InputStreamReader(System.in));
		String a=scan.readLine();
		//输入字符的范围
		System.out.print("please input the range of number:");
		Scanner scanner= new Scanner(System.in);
		int d=scanner.nextInt();
		int e=scanner.nextInt();
		h.subb(a, d-1, e+1);
	}
}

5、身份证验证器

import java.util.Scanner;

public class sfz {
	public static void main(String[] args) {
		  int[] w= {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1};
		  System.out.println("请输入身份证号码,末尾为X则改为10:");
		  Scanner scanner = new Scanner(System.in);
		  long sfz = scanner.nextLong();
		  int sum = 0;
		  long temp = 0;
		  long[] a = new long[18];
		  if((sfz/1000000000)/1000000000<=0) {
		   temp=sfz%10;
		   sfz=sfz/10;
		   a[17]=temp;
		  }
		  else {
		   sfz=sfz/100;
		   a[17]=10;
		  }
		  for(int j =16;j>=0;j--) {
		   temp=sfz%10;
		   sfz=sfz/10;
		   a[j]=temp;
		  }
		  for(int i = 0;i<18;i++) {
		   sum+=a[i]*w[i];
		  }
		  if(sum%11==1) {
		   System.out.println("身份证号码正确");
		  }
		  else {
		   System.out.println("身份证号码错误");
		  }
		  try
		  {
		      Thread.sleep(5000);
		  }
		  catch (InterruptedException e)
		  {
		      e.printStackTrace();
		  }
		 }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值